Javascript - 转换#### - ## - ##到大纪元时间

时间:2012-08-20 15:28:36

标签: javascript html5

有没有办法以####-##-##的格式从HTML对象中获取日期对象并将其转换为纪元时间。例如,用户输入2012年8月12日的值,当我打印出它的.val()时,显示为2012-08-12,我需要在Epoch时间内获取此值。

修改

迄今为止的代码:

if (hvStartDate == "") {
    hvStartDate = "start"
} 
else {
    console.log($("#hv-start-date").val()); // => 2012-08-20
    hvStartDate = new Date($("#hv-start-date").val()).getTime(); // => NaN
}
if (hvEndDate == "") {
    hvEndDate = "end"
} 
else {
    hvEndDate = new Date($("#hv-end-date").val()).getTime(); // => NaN
}

var myTmp = new Date("2012-08-20");
console.log(myTmp.getTime()); // => NaN

2 个答案:

答案 0 :(得分:6)

Javascript's Date built-in允许您将日期字符串传递给其构造函数,并根据该字符串为您提供日期。从那里,调用getTime( )将为您提供纪元时间。

new Date($('.user-value').val()).getTime();  // => epoch time
new Date('2012-08-12').getTime();  // 1344729600000

警告:注意区域设置字符串和区域设置特定的日期格式(例如,天和月的位置根据区域设置切换)。

编辑:根据您在下面评论中的代码,这是您需要做的。请注意,您必须在调用getTime()之前实例化新的日期对象

if (hvStartDate == "") {
    hvStartDate = "start"
} 
else {
    hvStartDate = new Date($("#hv-start-date").val()).getTime();
}

答案 1 :(得分:3)

只需使用getTime()功能即可。它返回自Epoch以来的毫秒数:

  var msSinceEpoch = myDate.getTime();

MDN的完整日期参考:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date

编辑:如果你也需要解析它,你可以:

  • 如果格式正确,请使用new Date(theString)
  • 解析后自己设置不同的日期字段(请参阅参考资料)
  • 使用日期解析库。我使用这个:http://www.datejs.com/,它对于所有日期解析,计算和格式化非常强大。