日期
let now = new Date(); // 显示当前的日期/时间
let Jan01_1970 = new Date(0);
let Jan02_1970 = new Date(24 * 3600 * 1000);
let Dec31_1969 = new Date(-24 * 3600 * 1000);
let date = new Date(“2017-01-26”);
let date =new Date(2011, 0, 1, 0, 0, 0, 0); // 1 Jan 2011, 00:00:00
let date = new Date(2011, 0, 1, 2, 3, 4, 567); // 1.01.2011, 02:03:04.567
访问 Date 对象中的日期组件
alert( date.getXxx() );
getFullYear() //获取年份(4 位数)
getMonth() //获取月份,从 0 到 11。
getDate() //获取当月的具体日期,从 1 到 31,这个方法名称可能看起来有些令人疑惑。
getHours(),getMinutes(),getSeconds(),getMilliseconds() //获取相应的时间组件。
getDay() //获取一周中的第几天,从 0(星期日)到 6(星期六)。
两个没有 UTC 变体的特殊方法:
getTime()
//返回日期的时间戳 —— 从 1970-1-1 00:00:00 UTC+0 开始到现在所经过的毫秒数。
注意:alert(+date) = alert(getTime())
测量时间间隔
1.new Date()可以相减,相减的结果是以毫秒为单位时间差,用于时间测量功能。
let start = new Date(); // 开始测量时间
// do the job
let end = new Date(); // 结束测量时间
alert( The loop took ${end - start} ms
);// 相减的结果是以毫秒为单位时间差,而不是日期
2.Date.now()会返回当前的时间戳,相当于 new Date().getTime()
let start = Date.now(); // 从 1 Jan 1970 至今的时间戳
// do the job
let end = Date.now(); // 完成
alert( The loop took ${end - start} ms
); // 相减的是时间戳,而不是日期
getTimezoneOffset()
//返回 UTC 与本地时区之间的时差,以分钟为单位
alert( new Date().getTimezoneOffset() );
如果你在时区 UTC-1,输出 60
如果你在时区 UTC+3,输出 -180
修改 Date 对象中的日期组件
setFullYear(year, [month], [date])
setMonth(month, [date])
setDate(date)
setHours(hour, [min], [sec], [ms])
setMinutes(min, [sec], [ms])
setSeconds(sec, [ms])
setMilliseconds(ms)
setTime(milliseconds)(使用自 1970-01-01 00:00:00 UTC+0 以来的毫秒数来设置整个日期)
// 以上方法除了 setTime() 都有 UTC 变体,例如:setUTCHours()。
Date.parse(str) 方法
可从字符串中读取日期
let ms = Date.parse(‘2012-01-26T13:51:50.417-07:00’);
alert(ms); // 1327611110417 (时间戳)
度量(Benchmarking)
有时我们需要更加精准的时间度量。JavaScript 自身并没有测量微秒的方法(百万分之一秒),但大多数运行环境会提供。例如:浏览器有 performance.now() 方法来给出从页面加载开始的以毫秒为单位的微秒数(精确到毫秒的小数点后三位):
alert(Loading started ${performance.now()}ms ago
);
// 类似于 “Loading started 34731.26000000001ms ago”
// .26 表示的是微秒(260 微秒)
// 小数点后超过 3 位的数字是精度错误,只有前三位数字是正确的
Node.js 有 microtime 模块以及其他方法。从技术上讲,几乎所有的设备和环境都允许获取更高精度的数值,只是不是通过 Date 对象。