使用moment .js,我无法将正确的moment对象转换为带时区的date对象。我记不出准确的日期。

例子:

var oldDate = new Date(),
    momentObj = moment(oldDate).tz("MST7MDT"),
    newDate = momentObj.toDate();
console.log("start date " + oldDate)
console.log("Format from moment with offset " + momentObj.format())
console.log("Format from moment without offset " + momentObj.utc().format())
console.log("(Date object) Time with offset " + newDate)
console.log("(Date object) Time without offset "+ moment.utc(newDate).toDate())

当前回答

.toDate并不适合我,所以,下面是我所做的:

futureStartAtDate = new Date(moment().locale("en").add(1, 'd').format("MMM DD, YYYY HH:MM"))

希望这能有所帮助

其他回答

尝试(无格式步骤)

new Date(moment())

瓦尔=瞬间。tz(“2019-04-15 12”,“美国/纽约”); 控制台(新日期(d); 控制台(新日期(当前); <剧本剧本src = " https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js " > < / > <剧本剧本src = " https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.23/moment-timezone-with-data.min.js " > < / >

这个问题有点晦涩。我会尽力解释的。”首先,您应该了解如何使用moment-timezone。根据这里的答案TypeError: moment()。Tz不是一个函数,你必须从moment-timezone导入moment,而不是默认的moment(当然你必须先NPM安装moment-timezone !)为了清楚起见,

const moment=require('moment-timezone')//import from moment-timezone

现在,为了使用时区功能,请使用moment.tz("date_string/moment()","time_zone")(更多详细信息请访问https://momentjs.com/timezone/)。该函数将返回一个具有特定时区的moment对象。为了清楚起见,

var newYork= moment.tz("2014-06-01 12:00", "America/New_York");/*this code will consider NewYork as the timezone.*/

现在,当您尝试将newYork (moment对象)转换为moment的toDate() (ISO 8601格式转换)时,您将得到英国格林尼治时间。有关更多详细信息,请参阅关于UTC的文章https://www.nhc.noaa.gov/aboututc.shtml。然而,如果你只是想要这种格式的本地时间(根据这个例子,纽约时间),只需添加方法.utc(true),参数为true,到你的moment对象。为了清楚起见,

newYork.toDate()//will give you the Greenwich ,UK, time.

newYork.utc(true).toDate()//will give you the local time. according to the moment.tz method arg we specified above, it is 12:00.you can ofcourse change this by using moment()

简而言之,时刻。tz会考虑您指定的时区,并将您的本地时间与格林尼治时间进行比较,从而得到一个结果。我希望这对你有用。

将moment对象转换为date对象:

从http://momentjs.com/docs/ # /显示/ as-javascript-date /

moment().toDate();

收益率:

Tue Nov 04 2014 14:04:01 GMT-0600 (CST)

转换任何日期,例如utc:

moment( moment().utc().format( "YYYY-MM-DD HH:mm:ss" )).toDate()

我需要在日期字符串中包含时区信息。我最初用的是瞬间。tz (dateStr美国/ New_York) .toString ();但后来我开始在把弦送回时刻时出错。

我尽力了。tz (dateStr美国/ New_York) .toDate ();但是后来我丢失了我需要的时区信息。

返回带有时区的可用日期字符串的唯一解决方案是moment。tz (dateStr美国/ New_York) .format ();