我需要根据用户时区转换UTC时间本地时间
我有两个参数utc time和users timezone as a string
即 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是NewZeland时区。请帮我解决这个问题。谢谢
答案 0 :(得分:2)
检查
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/
答案 1 :(得分:1)
时区不偏移。偏移量仅为时区的 part 。许多时区在两个不同的偏移之间交替以考虑daylight saving time。时区必须考虑到这一点,包括夏令时开始和结束的具体日期和时间,以及时区可能具有的任何变更历史记录。
你给出的新西兰案例就是一个很好的例子。你说" 12是New Zeland时区",因此预期从New Zealand is in DST for that date开始,从UTC时间6:14到新西兰当地时间的转换将是19:14。 - 13个小时后。
但12并不能完全代表新西兰。它距离UTC只有12小时的偏差。还有很多其他时区以不同的方式使用相同的偏移量。例如,Marshal群岛使用UTC + 12年轮,没有夏令时。
你应该真正阅读the timezone tag wiki - 特别是标题为" Time Zone!= Offset"的部分。
您应该使用tz database中的完整IANA标识符来表示时区,而不是偏移量。例如,美国东部时间为"America/New_York"
,印度时间为"Asia/Kolkata"
,新西兰时间为"Pacific/Auckland"
。您可以在the list on 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的Date and Time Fundamentals课程中详细介绍了这些主题。
答案 2 :(得分:0)
请检查此链接
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()