如何将日期转换为 UTC?

新手上路,请多包涵

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

2009-1-1 to 2009-1-3

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

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

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

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

原文由 dthrasher 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

toISOString() 方法返回简化扩展 ISO 中的字符串

格式 ( ISO 8601 ),长度始终为 24 或 27 个字符

( YYYY-MM-DDTHH:mm:ss.sssZ±YYYYYY-MM-DDTHH:mm:ss.sssZ ,

分别)。时区始终为零 UTC 偏移量,由

后缀“ Z ”。

来源: MDN 网络文档

您需要的格式是使用 .toISOString() 方法创建的。对于本机不支持此方法的旧浏览器(ie8 及以下),可以在 此处 找到 shim:

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

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

对于时区工作, moment.js 和 moment.js 时区 确实是非常宝贵的工具……尤其是在客户端和服务器 javascript 之间导航时区。

原文由 Will Stern 发布,翻译遵循 CC BY-SA 4.0 许可协议

简单又愚蠢

 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());

原文由 DrunkCoder 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题