即使系统时区与提供的时区相同,时刻Js也会更改时区对象的时间

时间:2017-09-04 08:23:02

标签: javascript datetime momentjs

我正在使用时刻js进行时区转换。

moment.tz("2017-09-04 1:48 PM", "Asia/Calcutta").format("DD-MM-YYYY HH:mm A");

当系统位于同一时区2017-09-04 1:48 PM时,时刻js将时间04-09-2017 19:18 PM转换为Asia/Calcutta

如何解决这个问题。

enter image description here

我的系统时区是Asia/Calcutta。使用moment.tz.guess();获取准确的时区值。

moment.tz("2017-09-04 1:48 PM", moment.tz.guess()).format("DD-MM-YYYY HH:mm A");

这也改变了时间。

提前致谢。

1 个答案:

答案 0 :(得分:3)

您的输入不符合ISO 8601格式,解析时应添加"YYYY-MM-DD h:mm A"格式参数。

您的代码提供弃用警告,因此您必须按照moment(String, String)中的建议使用parsing guide解析方法。

这是一份工作样本:

var m = moment.tz("2017-09-04 1:48 PM", "YYYY-MM-DD h:mm A", "Asia/Calcutta").format("DD-MM-YYYY HH:mm A");
console.log( m );
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.13/moment-timezone-with-data-2012-2022.min.js"></script>