本文介绍了如何使用moment-tz.js解析tz,如“GMT-08:00”。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我尝试运行此js
return function(milliSeconds, timeZoneId) {
if (milliSeconds == 0) {
return "";
}
var now = moment();
return now.tz(timeZoneIdm, milliSeconds).format('MMM d, yyyy H:mm:ss');
}
例如使用此输入:
milliSeconds = "1524578400000"
timezoneId = "GMT-08:00"
解析GMT-08:00
时失败。无论如何我可以调整它吗?
it fails for parsing "GMT-08:00"
. Anyway can I adjust it to work?
推荐答案
as docs states :
As moment.tz(..., String)
docs states:
时区标识符类似于'America / New_York'
或'Europe / Rome'
,GMT-08:00
不是有效输入。
A time zone identifier is something like 'America/New_York'
or 'Europe/Rome'
, "GMT-08:00"
is not a valid input.
在您的情况下,您可以使用然后:
In your case you can use moment(Number)
and then:
- 使用
tz()
function - 或使用
- converting to given zone using
tz()
function - or set offset using
utcOffset(String)
var milliSeconds = "1524578400000";
var timezoneId = "GMT-08:00";
var timeInt = parseInt(milliSeconds, 10)
var m1 = moment(timeInt).tz('America/Los_Angeles');
console.log(m1.format('MMM D, YYYY H:mm:ss'));
var offset = timezoneId.substring(3);
var m2 = moment(timeInt).utcOffset(offset);
console.log(m2.format('MMM D, YYYY H:mm:ss'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.14/moment-timezone-with-data-2012-2022.min.js"></script>
请注意:
- 时刻标记区分大小写,因此您必须使用
YYYY
多年,D
为月份(d
是星期几) -
1524578400000
是2018-04-24 14:00:00
UTC,我很想念为什么你期望早上5点
作为输出。
- moment formatting tokens are case sensitive, so you have to use
YYYY
for years andD
for day of the month (d
is day of the week) 1524578400000
is2018-04-24 14:00:00
UTC, I'm missing why you are expecting5am
as output.
这篇关于如何使用moment-tz.js解析tz,如“GMT-08:00”。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!