我在api响应中有一个日期和时间。我需要在用户时区中进行转换。
datetime: function (datetime) {
return moment(datetime, 'YYYY-MM-DD HH:mm:ss').tz(timeZone).format('MMM Do YYYY, h:mm a');
},
但是,start_date_time
与响应中的相同。只是格式已更改。如果我更改为其他时区,则可以正常工作。我的时区为"Asia/Kolkata"
如何让我立即知道该日期和时间不属于“亚洲/加尔各答”,需要将其转换为相同的日期?
答案 0 :(得分:2)
如果start_date_time
是UTC时间,则必须在其末尾添加一个Z
:
const start_date_time = "2019-04-20 02:00:00";
const timeZone = "Asia/Kolkata";
console.log(moment(start_date_time+"Z"));
console.log("Asia/Kolkata date: ", moment(start_date_time+"Z").tz(timeZone).format('MMM Do YYYY, h:mm a'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.23/moment-timezone-with-data.min.js"></script>
否则,您必须首先指定start_date_time
的时区,然后才能将其转换为另一个时区:
const start_date_time = moment.tz("2019-04-20 02:00:00", "America/New_York");
console.log(start_date_time.format());
const timeZone = "Asia/Kolkata";
console.log("Asia/Kolkata date: ", start_date_time.tz(timeZone).format('MMM Do YYYY, h:mm a'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.23/moment-timezone-with-data.min.js"></script>