我正在执行https://www.alex-arriaga.com/how-to-set-moment-js-timezone-when-creating-a-date/中的一个示例,但没有得到预期的结果。我的startDateAndTimeString将时间设置为08:00,并将时区设置为CST中的Mexico_City。然后我尝试转换为New_York(EST)和Los_Angeles(PST)时间。
如果开始时间是08:00 CST,那么应该是09:00 EST和06:00 PST,但我看到的是05:00 PST和08:00 EST。在本地,我处于EST,如果我没有将开始时间设置为CST,这是有意义的。当我处于EST时,我可以不将开始时间设置为CST吗?
var startDateAndTimeString = '2023-03-05 08:00:00';
// CST
var startDateAndTime = moment(startDateAndTimeString).tz('America/Mexico_City');
function formatDateToAnotherTimezone(anotherTimezone, startDateAndTime) {
return moment(startDateAndTime).tz(anotherTimezone).format('ha z');
}
var est = formatDateToAnotherTimezone('America/New_York',startDateAndTime);
var pst = formatDateToAnotherTimezone('America/Los_Angeles',startDateAndTime);
console.log(est)
console.log(pst)
<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>
1条答案
按热度按时间m1m5dgzv1#
我认为这不是使用www.example.com的正确方法moment.tz
为了方便起见,我打印出了墨西哥时区的GMT时间(用
startDateAndTime
表示)。您可以看到,第一个
console.log
打印了错误的答案。但是当我们正确调用www.example.com时,第二个
console.log
会打印正确的答案。moment.tz correctly, the secondconsole.log
prints the right answer.后续调整使用正确的
startDateAndTime
值。