0x01 内容介绍
许多朋友在开发的过程中总会遇到各种有关时间的问题,如获取某特定时间的时间戳、把时间对象格式化等等,本篇文章将会帮助大家总结并解决一些常用的时间问题,您可以把它当成一篇字典文章,方便今后查阅、使用
0x02 时间戳
const date = new Date(); //获取时间对象
date.getTime(); //获取当前的时间戳,从1970年1月1日零点到现在的毫秒数
Math.round(date.getTime()/1000); //获取当前的时间戳,根据毫秒数四舍五入的结果
Math.floor(date.getTime()/1000); //获取当前的时间戳,根据毫秒数下舍入
Date.parse(date); // 获取当前时间戳,毫秒是0
0x03 获取日期和时间
let date = new Date();
let year = date.getFullYear();//获取完整的年份(4位,1970-????)
let month = date.getMonth() + 1;//获取当前月份(0-11,0代表1月)
let day = date.getDate();//获取当前日(1-31)
let weekDay = date.getDay();//获取当前星期X(0-6,0代表星期天)
let hour = date.getHours();//获取当前小时数(0-23)
let minute = date.getMinutes();//获取当前分钟数(0-59)
let second = date.getSeconds();//获取当前秒数(0-59)
let milliseconds = date.getMilliseconds();//获取当前毫秒数(0-999)
let setWeekDay = '';
switch (weekDay) {
case 0:
setWeekDay = '星期天';
break;
case 1:
setWeekDay = '星期一';
break;
case 2:
setWeekDay = '星期二';
break;
case 3:
setWeekDay = '星期三';
break;
case 4:
setWeekDay = '星期四';
break;
case 5:
setWeekDay = '星期五';
break;
case 6:
setWeekDay = '星期六';
break;
}
console.log(`今天是${year}年${month}月${day}日 ${setWeekDay} ${hour}时${minute}分${second}秒 ${milliseconds}毫秒`);
// 下面三个语句是在 Node 环境里运行的结果,浏览器里运行的结果与这个不同
date.toLocaleDateString(); //获取日期,YYYY-MM-DD
date.toLocaleTimeString(); //获取时间,HH:mm:ss
date.toLocaleString(); //获取日期与时间,YYYY-MM-DD HH:mm:ss
0x04 实战
要求:写一个通用函数或者类,可以获取当前时间或者用户自定义时间的时间戳和时间格式,也可以实现两者的相互转换
class Datetime {
constructor(date) {
if(date) {
if (date instanceof Date) {
this.date = date;
} else {
throw new Error('构造函数参数错误,应传Date()对象')
}
} else {
this.date = new Date();
}
}
// 转化成时间戳
transTimeStamp() {
return this.date.getTime();
}
// 转化为时间格式 YYYY-MM-DD HH:mm:ss
transDateTime() {
const {date, dateTimeFormat} = this;
let year = date.getFullYear();//获取完整的年份(4位,1970-????)
let month = dateTimeFormat(date.getMonth() + 1);//获取当前月份(0-11,0代表1月)
let day = dateTimeFormat(date.getDate());//获取当前日(1-31)
let hour = dateTimeFormat(date.getHours());//获取当前小时数(0-23)
let minute = dateTimeFormat(date.getMinutes());//获取当前分钟数(0-59)
let second = dateTimeFormat(date.getSeconds());//获取当前秒数(0-59)
return `${year}-${month}-${day} ${hour}:${minute}:${second}`
}
// 格式化
dateTimeFormat(v) {
return v < 10 ? `0${v}` : `${v}`
}
setDateTime(date) {
if(date) {
if (date instanceof Date) {
this.date = date;
} else {
throw new Error('setDateTime函数参数错误,应传Date()对象')
}
} else {
this.date = new Date();
}
}
}
// 实现
const date = new Datetime();
console.log(date.transDateTime());
console.log(date.transTimeStamp());
date.setDateTime(new Date('2017-06-05 12:22:23'));
console.log(date.transDateTime());
console.log(date.transTimeStamp());
简书作者 小菜荔枝 转载请联系作者获得授权
网友评论