如何将日期转换为UTC?

2022-08-29 22:28:26

假设您网站的用户输入了一个日期范围。

2009-1-1 to 2009-1-3

您需要将此日期发送到服务器进行某些处理,但服务器希望所有日期和时间都采用 UTC 格式。

现在假设用户在阿拉斯加。由于它们的时区与 UTC 完全不同,因此需要将日期范围转换为如下所示的内容:

2009-1-1T8:00:00 to 2009-1-4T7:59:59

使用JavaScript对象,如何将第一个“本地化”日期范围转换为服务器可以理解的日期范围?Date


答案 1

简单而愚蠢

var date = new Date();
var now_utc = Date.UTC(date.getUTCFullYear(), date.getUTCMonth(),
                date.getUTCDate(), date.getUTCHours(),
                date.getUTCMinutes(), date.getUTCSeconds());

console.log(new Date(now_utc));
console.log(date.toISOString());

答案 2

该方法以简化的扩展 ISO 格式 (ISO 8601) 返回一个字符串,该字符串的长度始终为 24 或 27 个字符(或 )。时区始终为零 UTC 偏移量,如后缀 “” 所示。toISOString()YYYY-MM-DDTHH:mm:ss.sssZ±YYYYYY-MM-DDTHH:mm:ss.sssZZ

来源: MDN 网络文档

您需要的格式是使用该方法创建的。对于本身不支持此方法的旧版浏览器(ie8 及更低版本),可以在此处找到填充程序:.toISOString()

这将使您有能力做您需要的事情:

var isoDateString = new Date().toISOString();
console.log(isoDateString);

对于时区工作,时刻.js和时刻.js时区确实是无价的工具......特别是用于在客户端和服务器javascript之间导航时区。