[英]How to convert a UTC time to local time javascript
我需要根据用户时区转换UTC时间本地时间
我有两个参数utc time和users timezone作为字符串
即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 T
和zone designator Z
Z是用于z主任UTC又名偏移ž乌鲁时间的时区标志。 您可以在此处阅读有关国际日期标准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, 没有夏令时。
您应该真正阅读时区标签Wiki-特别是标题为“ Time Zone!= Offset”的部分。
您应该使用tz数据库中完整的IANA标识符来代表时区,而不是偏移量。 例如,美国东部时间是"America/New_York"
,印度时间是"Asia/Kolkata"
,新西兰时间是"Pacific/Auckland"
。 您可以在Wikipedia的列表中找到更多信息。
您可以使用moment-timezone在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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.