Javascript 使用moment.js创建新的日期对象

Javascript 使用moment.js创建新的日期对象,javascript,momentjs,moment-timezone,Javascript,Momentjs,Moment Timezone,我有字符串: date = "2019/1/16 00:00 +0900" 我在纽约(时区-5),我想创建这样一个日期对象: Wed Jan 16 2019 00:00:00 GMT+0900 我无法使用javascript进行转换。它将返回时区-5。 我使用moment.js: moment.tz(date, 'Asia/Tokyo').format('YYYY/MM/DD HH:MM'); 然而,这是不对的。你能帮帮我吗。非常感谢。如果您的日期对象是一个时刻实例,它将起作用: mom

我有字符串:

date =  "2019/1/16 00:00 +0900"
我在纽约(时区-5),我想创建这样一个日期对象:

Wed Jan 16 2019 00:00:00 GMT+0900
我无法使用javascript进行转换。它将返回时区-5。 我使用moment.js:

moment.tz(date, 'Asia/Tokyo').format('YYYY/MM/DD HH:MM');

然而,这是不对的。你能帮帮我吗。非常感谢。

如果您的日期对象是一个时刻实例,它将起作用:

moment.tz(moment(date), 'Asia/Tokyo').format('YYYY/MM/DD HH:MM Z')

时区很难确定。我认为一个简单易懂且有点惯用的解决方案是:

const date = "2019/1/16 00:00 +0900";

// parse in any timezone
const dateMoment = moment(date); 

// deliberately set the timezone in which the moment is interpreted in
const timezonedMoment = dateMoment.tz('Asia/Tokyo'); 

// format the moment
const formattedDate = dateMoment.format('YYYY/MM/DD HH:MM z');

当然,你可以用更简洁的形式写这篇文章。

很抱歉,可能是不清楚问题的重复,但它返回“2019/01/16 00:01+09:00”。这是一个字符串,负号可能错了。我想返回一个对象,如:Wed Jan 16 2019 00:00:00 GMT+0900抱歉,但它返回“2019/01/16 00:01+09:00”。这是一个字符串,负号可能错了。我想返回一个对象,比如:Wed Jan 16 2019 00:00:00 GMT+0900如果你想要一个javascript
日期,你应该知道它没有固定到任何时区。除非您使用更高级的模型,如
moment
,或者自己进行一些转换,否则无法控制时区。格式化
Date
对象将输出计算机时区中的时间,在本例中为GMT-5。要专注于解决方案:如果需要在特定时区中用Javascript表示日期时间,请不要使用
Date
,这样做太简单了<代码>时刻
是一个标准选项,但也存在其他选项。使用
时刻
对象,而不是
日期
,在这种情况下,您可以使用
时区动作
——它知道时间点和预期工作的时区。科里的简单的
moment.tz(日期,'Asia/Tokyo')
也是如此。是的,我知道。但当我使用新日期(Date)时。它返回当前的timez_区域(-5)。不是我期望的+9。@Corey字符串中的时区仅用于解析。转储
Date
对象将产生当前时区中的等效时间和日期。如果您使用
日期
,您将实际上丢失时区信息。