了解日期和时间到特定时区的转换
Understanding the conversion of date and time to specific timezone
我在 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"
如何让 moment 知道此日期和时间不属于 "Asia/Kolkata" 并且需要将其转换为相同的日期和时间?
如果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>
我在 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"
如何让 moment 知道此日期和时间不属于 "Asia/Kolkata" 并且需要将其转换为相同的日期和时间?
如果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>