我收到一个文本值,格式如下:" 9/19/2018 10:00 AM"。 您如何使用moment.js或仅使用javascript将其转换为纪元时间戳?
实施例
console.log(moment('4/17/2018 10:00 AM', 'mm/dd/yyyy hh:mm a').format('x'));
答案 0 :(得分:3)
使用日期字符串创建日期对象,然后使用对象的getTime()
方法。
date = new Date("9/19/2018 10:00 AM");
console.log(date.getTime())

答案 1 :(得分:1)
正常的js
new Date("9/19/2018 10:00 AM");
如果你想做片刻js
moment("9/19/2018 10:00 AM").unix()
答案 2 :(得分:1)
代码中的问题是您在解析输入时使用了错误的令牌。时刻令牌区分大小写,mm
代表0..59
分钟,dd
代表日期名称(根据区域设置),并且不支持小写yyyy
。
M
月份编号1..12
,大写D
或DD
代表日期,大写YYYY
代表{{3} } docs。
您的代码可能如下:
console.log(moment('4/17/2018 10:00 AM', 'M/D/YYYY hh:mm a').format('x'));
console.log(moment('4/17/2018 10:00 AM', 'M/D/YYYY hh:mm a').valueOf());

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>
&#13;
请注意,您可以同时使用moment(String, String)
(返回String
)和format('x')
(返回Number
)。
我建议使用valueOf()
而不是new Date()
(Date.parse()
),因为这样您就明确说明了如何解析输入(您对1/2/2018之类的输入有什么期望? 2月1日或1月2日?)。请参阅moment(String, String)
关于Date.parse
行为
有些令人惊讶的是,这些格式(例如
7/2/2012 12:34
)也是明确的。Date.parse
赞成美国(MM/DD/YYYY
)优先于非美国(DD/MM/YYYY
表格。但是,这些格式可能对人类不明确,因此如果可能,您应该更喜欢
YYYY/MM/DD
。