如何将 UTC 时间转换为本地时间 JavaScript

How to convert a UTC time to local time javascript

本文关键字:时间 JavaScript 转换 UTC      更新时间:2023-09-26

我需要根据用户时区转换UTC时间本地时间

我有两个参数 utc 时间和用户时区作为字符串

即0,1,2,3 ...12(时区(0,-1,-2,-3 ...-12(时区(

var utc = "2014-10-18T06:14:41.512Z"
tz = 5.5(Indian Standard Time)

预期结果 2014年10月18日 星期六 11:44:28 GMT+0530

我已经尝试了时刻js

moment("2014-10-18T06:14:41.512Z").zone('+05:30').format('YYYY-MM-DD HH:mm')

结果是正确的。

但是当我将时区更改为其他时区时,它没有显示为预期结果试

moment("2014-10-18T06:14:41.512Z").zone('+12:00').format('YYYY-MM-DD HH:mm')

结果 ">2014-10-18 18:14" 预计 2014-10-18 19:18

12是新西兰时区。请帮我解决这个问题。谢谢

检查这个

var date = new Date('2014-10-19 17:00:34 UTC');
date.toString();

var timezone = "America/New_York";
var utcDate = "2014-10-19T10:31:59.0537721Z";
var localDate = moment.utc(utcDate).tz(timezone).format()

还要检查

http://www.digitoffee.com/programming/get-local-time-utc-using-moment-js/94/

为了遵守国际标准,您需要格式化 UTC 日期以包含 time delimiter Tzone designator Z

Zzero UTC 偏移量(又名 Zulu 时间(的时区指示符。您可以在此处阅读有关国际日期标准ISO8601格式细节的更多信息。

一旦您符合国际标准,跨浏览器友好的方法很简单:

new Date('2014-10-19T17:00:34Z');
// Sun Oct 19 2014 12:00:34 GMT-0500 (Central Daylight Time)

时区不是偏移量。 偏移量只是时区的一部分。 许多时区在两个不同的偏移量之间交替,以考虑夏令时。 时区必须考虑到这一点,包括夏令时开始和结束的特定日期和时间,以及时区可能具有的任何更改历史记录。

你举的新西兰案例就是一个很好的例子。 您说"12 是新西兰时区",因此预计由于新西兰在该日期处于夏令时,因此从 6:14 UTC 到新西兰当地时间的转换将是 19:14。- 13小时后。

但12并不能完全代表新西兰。它与 UTC 仅相差 12 小时。 还有很多其他时区以不同的方式使用相同的偏移量。 例如,马歇尔群岛全年使用 UTC+12,没有夏令时。

你真的应该阅读时区标签维基 - 特别是标题为"时区!=偏移量"的部分。

您应该使用来自

tz 数据库的完整 IANA 标识符来表示时区,而不是偏移量。 例如,美国东部时间是"America/New_York",印度时间是"Asia/Kolkata",新西兰时间是"Pacific/Auckland"。 您可以在维基百科的列表中找到更多信息。

您可以使用时刻时区在 JavaScript 中处理这些内容。

moment("2014-10-18T06:14:41.512Z").tz('Pacific/Auckland').format('YYYY-MM-DD HH:mm')
//  Output: "2014-10-18 19:14"

我还在关于 Pluralsight.com 的日期和时间基础课程中详细介绍了这些主题。

请检查此链接

http://www.digitoffee.com/programming/get-local-time-utc-using-moment-js/94/

var timezone = "UTC+5.30"; 
var utcDate = "2014-10-19T10:31:59.0537721Z";
var localDate = moment.utc(utcDate).tz(timezone).format()