Moment.js转换为日期对象
Moment.js transform to date object
使用Moment.js,我无法将正确的时刻对象转换为带时区的日期对象。我找不到正确的日期。
示例:
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())
使用此功能将时刻对象转换为日期对象:
发件人http://momentjs.com/docs/#/displaying/as-javascript日期/
moment().toDate();
收益率:
Tue Nov 04 2014 14:04:01 GMT-0600 (CST)
只要您已经用所需区域的数据初始化了时刻时区,您的代码就会按预期工作。
您正确地将时刻转换为时区,这反映在momentObj.format()
的第二行输出中。
切换到UTC不仅会减少偏移量,还会变回UTC时区。如果要执行此操作,则根本不需要原始的.tz()
调用。你可以做moment.utc()
。
也许您只是想更改输出格式字符串?如果是,只需为format
方法指定您想要的参数:
momentObj.format("YYYY-MM-DD HH:mm:ss")
关于代码的最后几行,当您使用toDate()
返回到Date
对象时,您将放弃moment.js的行为,返回到JavaScript的行为。JavaScript Date
对象将始终打印在运行它的计算机的本地时区。moment.js对此无能为力。
其他一些小事:
虽然moment构造函数可以使用
Date
,但通常最好不要使用。对于"现在",不要使用moment(new Date())
。相反,只需使用moment()
。两者都可以,但这是不必要的冗余。若您是从一个字符串进行解析,请将该字符串直接传递到moment中。不要试图先将其解析为Date
。您会发现moment的解析器更加可靠。像
MST7MDT
这样的时区是出于向后兼容性的原因。它们源于POSIX风格的时区,并且只有少数在TZDB数据中。除非绝对必要,否则应使用诸如America/Denver
之类的密钥。
.toDate
对我来说并不是真的有效,所以,下面是我所做的:
futureStartAtDate = new Date(moment().locale("en").add(1, 'd').format("MMM DD, YYYY HH:MM"))
希望这能帮助
由于momentjs无法控制javascript日期对象,我找到了一个解决方案。
const currentTime = new Date();
const convertTime = moment(currentTime).tz(timezone).format("YYYY-MM-DD HH:mm:ss");
const convertTimeObject = new Date(convertTime);
这将为您提供一个具有转换时间的javascript日期对象
这个问题有点模糊。我会尽力解释的。首先,您应该了解如何使用时刻时区。根据这里的答案,TypeError:memont().tz不是一个函数,你必须从时刻时区导入时刻,而不是默认时刻(当然,你必须首先npm安装时刻时区!)。为了清楚起见,
const moment=require('moment-timezone')//import from moment-timezone
现在,要使用时区功能,请使用moment.tz("date_string/moment()","time_zone")(访问https://momentjs.com/timezone/了解更多详细信息)。此函数将返回具有特定时区的力矩对象。为了清楚起见,
var newYork= moment.tz("2014-06-01 12:00", "America/New_York");/*this code will consider NewYork as the timezone.*/
现在,当您尝试将newYork(moment对象)与moment的转换为Date()(ISO 8601格式转换)时,您将获得英国格林威治的时间。有关更多详细信息,请浏览本文https://www.nhc.noaa.gov/aboututc.shtml,关于UTC。但是,如果您只想使用这种格式的本地时间(根据本例,为纽约时间),只需将方法.utc(true)和arg 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()
简而言之,moment.tz会考虑您指定的时区,并将您的当地时间与格林威治时间进行比较,以得出结果。我希望这是有用的。
转换任何日期,例如utc:
moment( moment().utc().format( "YYYY-MM-DD HH:mm:ss" )).toDate()
let dateVar = moment('any date value');
let newDateVar = dateVar.utc().format();
漂亮干净!!!!
我需要在日期字符串中包含时区信息。我最初使用的是moment.tz(dateStr, 'America/New_York').toString();
,但后来我开始在将该字符串反馈到moment时出现错误。
我试过moment.tz(dateStr, 'America/New_York').toDate();
,但后来我丢失了我需要的时区信息。
返回时区为的可用日期字符串的唯一解决方案是moment.tz(dateStr, 'America/New_York').format();
try(无format
步骤)
new Date(moment())
var d = moment.tz("2019-04-15 12:00", "America/New_York");
console.log( new Date(d) );
console.log( new Date(moment()) );
<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>
moment已于2018年6月更新了js-lib。
var newYork = moment.tz("2014-06-01 12:00", "America/New_York");
var losAngeles = newYork.clone().tz("America/Los_Angeles");
var london = newYork.clone().tz("Europe/London");
newYork.format(); // 2014-06-01T12:00:00-04:00
losAngeles.format(); // 2014-06-01T09:00:00-07:00
london.format(); // 2014-06-01T17:00:00+01:00
如果你可以自由使用Angular5+,那么最好使用datePipe功能,而不是这里的时区功能。我不得不使用moment.js,因为我的项目仅限于Angular2。
新日期(moment())-在导出excel 中的数据列时可能出错
使用
moment.toDate()-不会出错或使导出的文件损坏
- 比较从函数和生成的日期对象
- 如何获得一个只有时间的moment.js日期对象
- 使用moment.js获取时间分区的偏移日期对象
- 获取本地时间的JS日期,日期对象中没有时区详细信息
- 将某个时间格式转换为日期对象
- 正在使用日期字符串初始化javascript日期对象
- 在CouchDB Map函数中发出日期时-对日期对象调用的内容
- 如何将事件的日期放入fullcalendar中的日期对象中
- 为什么在JavaScript中可以从另一个日期对象中减去日期对象
- 理解日期对象接收参数时的getDay()方法
- JS日期对象setUTCMonth()将月份增加2
- 时间-日期对象JavaScript getUTCMilliseconds
- 将带有 AM/PM 的日期字符串转换为 javascript 日期对象
- Javascript 测试中的假日期对象
- 转换/格式化日期对象
- 如何在发布JavaScript日期对象时保留时区偏移量
- JS日期对象在某个范围内的百分比
- 无法从日期对象javascript获取日期和月份
- javascript日期对象未返回正确的日期
- Javascript日期对象-JSFiddle中的不同值