什么是毫秒数?
毫秒数,即毫秒(Millisecond),是时间单位之一,表示时间的一万分之一秒,通常用于计算机中的时间处理。在程序中,我们经常需要将时间戳转换成需要的日期格式或者将日期格式转换成时间戳。而毫秒数本质上就是表示一个时间戳的整数,是距离固定的时间点,如1970年1月1日0点0分0秒(UTC时区)所经过的毫秒数。
var milliseconds = new Date('2021-11-11').getTime();
世界协调时间介绍
世界协调时间(Coordinated Universal Time,简称UTC)是一个由国际原子时(TAI)和地球自转观测所得出的且与格林威治平均时具有同样频率的时间标准。它是国际标准化组织ISO 8601的基础之一,是全球通用的时间标准,其精度在原子时秒级别上,相对于地球自转而言是高精度的。
为了保持UTC时间与地球自转的同步性,2015年开始,国际地球自转与参考系统服务(IERS)采取了“闰秒”措施,即在UTC时间基础上加入或扣除1秒钟,以解决地球自转速度不均匀带来的误差。如下图所示:
在计算机中,我们可以使用JavaScript内置的Date对象来获取当前时间,并转换成对应时区的UTC时间。
var utcDate = new Date().toUTCString();
console.log(utcDate);
获取指定日期的毫秒数
将日期格式转换成毫秒数
在JavaScript中,我们可以通过使用Date对象的getTime()方法将指定日期转换成对应的毫秒数。
var date = new Date('2021-11-11'); //指定日期
var milliseconds = date.getTime(); //将指定日期转换成毫秒数
console.log(milliseconds);
以上代码中,我们首先使用new Date()构造函数创建一个Date对象,将指定日期传入,然后调用getTime()方法,获取该日期距离1970年1月1日0点0分0秒(UTC时区)所经过的毫秒数。
将毫秒数转换成日期格式
与上述操作相反,我们可以通过使用Date对象的setTime()方法,将指定毫秒数转换成对应的日期格式。
var milliseconds = 1636579200000; //指定毫秒数
var date = new Date();
date.setTime(milliseconds); //将指定毫秒数转换成日期格式
console.log(date.toLocaleDateString());
以上代码中,我们首先指定了一个毫秒数,然后创建了一个Date对象,并调用setTime()方法将毫秒数转换成了对应的日期格式,并使用toLocaleDateString()方法输出对应的日期字符串。
使用差值获取指定日期的毫秒数
有时候我们需要根据当前时间计算出一个未来或过去的时间点距离现在的毫秒数。这可以通过对时间进行差值运算来实现。
var now = new Date().getTime(); //获取当前时间的毫秒数
var future = now + 24 * 60 * 60 * 1000; //计算出24小时之后的毫秒数
var past = now - 24 * 60 * 60 * 1000; //计算出24小时之前的毫秒数
console.log(future, past);
以上代码中,我们首先获取当前时间的毫秒数now,然后根据一天的毫秒数计算出未来和过去24小时的毫秒数并分别赋值给future和past。
实战:根据世界协调时间设置指定日期的毫秒数
在实际开发中,我们经常需要根据世界协调时间(UTC)和用户所在时区,来计算出指定日期的毫秒数。
/**
* @param {string} date 日期字符串
* @param {number} timezoneOffset 时区偏移量(以分钟为单位)
* @returns {number} 指定日期的毫秒数
*/
function getMillisecondsByDateAndTimezone(date, timezoneOffset) {
var localDate = new Date(date); //将日期字符串转换成本地时间
var utcMilliseconds = localDate.getTime() - (localDate.getTimezoneOffset() * 60 * 1000); //减去本地时区的偏移量,得到UTC时间的毫秒数
var timezoneMilliseconds = utcMilliseconds + (timezoneOffset * 60 * 1000); //加上所在时区的偏移量,得到指定时区的毫秒数
return timezoneMilliseconds;
}
var date = '2021-11-11'; //指定日期
var timezoneOffset = -480; //指定时区偏移量(中国标准时间为UTC+8,即-480分钟)
var milliseconds = getMillisecondsByDateAndTimezone(date, timezoneOffset); //计算出指定日期在中国标准时间下的毫秒数
console.log(milliseconds);
以上代码中,我们定义了一个getMillisecondsByDateAndTimezone()函数,该函数可以根据输入的日期字符串和所在时区偏移量,返回该日期在指定时区下的毫秒数。
总结
本篇文章介绍了什么是毫秒数,以及如何获取指定日期的毫秒数。同时,我们还介绍了世界协调时间的概念,并实现了一个函数,用于将指定日期转换成对应时区下的毫秒数。
在实际编程中,我们需要根据不同的需求,灵活运用上述技巧,处理时间和日期相关的业务逻辑。