Javascript 使用momentjs将日期转换为历元,然后再转换回日期
我试图将日期字符串转换为历元,然后将历元转换回日期字符串,以验证我提供的日期字符串是否正确Javascript 使用momentjs将日期转换为历元,然后再转换回日期,javascript,date,momentjs,Javascript,Date,Momentjs,我试图将日期字符串转换为历元,然后将历元转换回日期字符串,以验证我提供的日期字符串是否正确 var epoch = moment("10/15/2014 9:00").unix(); // do I need to do .local()? var momentDate = moment(epoch); // I've also tried moment.utc(epoch) var momentDateStr = momentDate.calendar(); alert("Values ar
var epoch = moment("10/15/2014 9:00").unix(); // do I need to do .local()?
var momentDate = moment(epoch); // I've also tried moment.utc(epoch)
var momentDateStr = momentDate.calendar();
alert("Values are: epoch = " + epoch + ", momentDateStr = " + momentDateStr);
呈现
Values are: epoch = 1413378000, momentDateStr = 01/17/1970
注意:我正在使用以下版本的MomentJS脚本://cdnjs.cloudflare.com/ajax/libs/momente.js/2.8.3/momente with locales.js
您得到的是unix秒数,而不是毫秒数
您需要将其乘以1000或使用valueOf()
并且不要忘记使用格式化程序,因为您使用的是非ISO 8601格式。如果您忘记传递格式化程序,则该日期将在UTC时区中解析,或作为无效日期解析
moment("10/15/2014 9:00", "MM/DD/YYYY HH:mm").valueOf()
这里有几件事不对:
- 首先是术语。指某物的起点。“Unix时代”是UTC 1970年1月1日午夜。不能将任意“日期字符串转换为历元”。你可能是说,这经常被错误地称为“大纪元时间”
- 返回Unix时间(以整秒为单位),但默认的
构造函数接受以毫秒为单位的时间戳。您应该改为使用返回毫秒。请注意,调用时刻
也可以工作,但会导致精度下降.unix()*1000
- 您正在解析字符串,但未提供格式说明符。这不是一个好主意,因为像1/2/2014这样的值可能被解释为2月1日或1月2日,这取决于代码运行的区域设置。(这也是您在控制台中收到弃用警告的原因。)相反,请提供与预期输入匹配的,例如:
moment("10/15/2014 9:00", "M/D/YYYY H:mm")
- 有非常特殊的用途。如果您接近该日期,它将返回类似“今天上午9:00”的值。如果这不是您所期望的,那么您应该使用该函数。同样,您可能希望传递一个格式说明符
- 若要在评论中回答您的问题,请选择“否”-您不需要调用
或.local()
.utc()
var ts = moment("10/15/2014 9:00", "M/D/YYYY H:mm").valueOf();
var m = moment(ts);
var s = m.format("M/D/YYYY H:mm");
alert("Values are: ts = " + ts + ", s = " + s);
在我的机器上,在美国太平洋时区,它会导致:
数值为:ts=1413388800000,s=10/15/2014 9:00
由于输入值是根据本地时间解释的,因此如果您位于不同的时区,您将获得不同的ts
值
还要注意的是,如果你真的想用整秒来工作(可能会失去精度),矩也有相应的方法。您可以使用.unix()
以整秒为单位返回时间戳,并使用矩.unix(ts)
将其解析回某个时刻
var ts = moment("10/15/2014 9:00", "M/D/YYYY H:mm").unix();
var m = moment.unix(ts);
我在第一行得到了这样的警告:弃用警告:建设倒退到js日期的时刻。这是不鼓励的,将在即将发布的主要版本中删除。有关更多信息,请参阅。请参阅上述方法当前已折旧。一个更好、更准确的选项是使用
valueOf()
有趣的快捷方式.valueOf()
->+moment()