[英]UTC date convert to local timezone
我有UTC格式的日期。
"2016-10-12 05:03:51"
我做了一个函数,将UTC日期转换为我的本地时间。
function FormatDate(date)
{
var arr = date.split(/[- :T]/), // from your example var date = "2012-11-14T06:57:36+0000";
date = new Date(arr[0], arr[1]-1, arr[2], arr[3], arr[4], 00);
var newDate = new Date(date.getTime()+date.getTimezoneOffset()*60*1000);
var offset = date.getTimezoneOffset() / 60;
var hours = date.getHours();
newDate.setHours(hours - offset);
return newDate;
}
我的当地时区是格林尼治标准时间+0530。
我的代码产生了以下输出:
Tue Oct 11 2016 10:33:00 GMT+0530 (IST)
我使用在线工具转换了日期,以获取正确的日期和时间。
Wednesday, October 12, 2016 10:30 AM
我的代码按时匹配在线工具,但不匹配日期。
我该如何更正我的代码输出,最好是使用moment.js
?
UTC是标准而非格式。 我假设您的意思是您的字符串使用零偏移,即“ 2016-10-12 05:03:51”为“ 2016-10-12 05:03:51 + 0000”
解析字符串时,您处在正确的轨道上,但是在创建日期时,可以使用UTC方法阻止主机调整系统偏移的值。
function parseDateUTC(s){ var arr = s.split(/\\D/); return new Date(Date.UTC(arr[0], arr[1]-1, arr[2], arr[3], arr[4], arr[5])); } console.log(parseDateUTC('2016-10-12 05:03:51').toLocaleString());
如果要使用moment.js,可以执行以下操作。 它会在解析字符串时强制使用UTC,然后在本地将其写入输出:
var d = moment.utc('2016-10-12 05:03:51','YYYY-MM-DD HH:mm:ss'); console.log(d.local().format());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.0/moment.js"></script>
既然您已经标记了“ moment
,我假设您正在使用“时刻”。
在这种情况下,您应该保持方法的一致性,并且不要混淆时间和日期对象。
var dateStr = '2016-10-12 05:03:51'; var timeZone = "+0530"; var date = moment.utc(dateStr).utcOffset(dateStr + timeZone) console.log(date.toString())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.