本文详细介绍JavaScript中几种常见时间格式的转换方法,包括获取当前中国标准时间、将日期转换为13位毫秒级时间戳、获取当天零点时间戳,以及处理ISO格式字符串和UTC时间。文章还探讨了UTC时间与北京时间的差异,并提供了一个后端所需的特定时间格式拼接示例,最后通过代码实现获取任意时区的本地时间。
JavaScript Date 实例
提取当前系统生成的中国标准时间字符串
console.log(new Date()) //Wed Nov 15 2023 12:16:39 GMT+0800 (中国标准时间)
Unix 时间戳数值
把当前中国标准时间对象转换为其对应的时间戳数值。
13位数值代表以毫秒为计量单位的时间戳
console.log(new Date().getTime()) //1700021927186
构造表示当天起始时刻的时间对象
调用 setHours(0, 0, 0, 0) 函数后返回毫秒级数值
console.log(new Date().setHours(0, 0, 0, 0)) //1699977600000
当前日期的 ISO 8601 格式字符串或 UTC 协调世界时
ISO 格式字符串遵循 YYYY-MM-DDThh:mm:ss.xxxZ 国际标准,T 为时间分隔符,Z 代表 UTC 时区偏移。若未指定时区,偏移量默认为 0。
调用 toISOString() 方法可将日期对象自动转换为 UTC 时间。UTC 是不受时区影响的标准时间表示法,便于跨时区对比与运算。
UTC 时间与北京时间存在 8 小时时差,例如 2023-01-13T16:00:00.000Z 对应北京时间 2023-01-14 00:00:00;又如 20100607T152000+08,其中“+08”标识东八区。
console.log(new Date().toISOString()) //2023-11-14T16:00:00.000Z
后端要求返回格式如 2023-11-14T16:00:00Z,故采用字符串拼接方式处理。
console.log(new Date().toISOString().slice(0,-5) + 'Z' )补充:JS 获取 UTC 时间及转换各时区本地时间的方法
获取 UTC 时间的必要性在于本地时间可被用户修改,导致获取结果错误,因此需采用统一标准时间。
function getLocalTime(i){
var d = new Date();
var len = d.getTime();
//本地时间与UTC时间的时间偏移差
var offset = d.getTimezoneOffset() * 60000;
//得到现在的UTC时间,各时区UTC时间相同
var utcTime = len + offset;
//得到时区标准时间
return new Date(utcTime + 3600000 * i);
//得到UTC时间戳
//return new Date(utcTime).getTime();
//得到时区时间戳
// return new Date(utcTime + 3600000 * i).getTime();
}
console.log("东八区-北京时间:" + getLocalTime(8)); //东八区-北京时间:Wed May 25 2022 10:10:32 GMT+0800 (中国标准时间)
console.log("西八区-太平洋时间(美国和加拿大):" + getLocalTime(-8)); //西八区-太平洋时间(美国和加拿大):Tue May 24 2022 18:10:32 GMT+0800 (中国标准时间)
// i:要得到那个时区的时间就传几,东区为正数,西区为负数
内容归纳
至此完成关于 JavaScript 中几种时间格式之间简单转换的讲解,更多 JS 时间格式转换相关内容请查阅本站往期文章或继续浏览下方关联文章,感谢支持!