我正在尝试使用两个MM-dd-yyyy HH:mm:ss格式化日期来查找它们之间的秒数。我该怎么做呢?
答案 0 :(得分:1)
使用Date.parse(...)
解析日期以创建Date
对象。
在创建的对象上使用.valueOf()
,您将获得此日期的纪元(自1970年1月1日以来的毫秒数)。
对两个日期执行此操作并减去数字。差异是日期之间的时间(以毫秒为单位)。其余的应该清楚:)
修改强>
在评论中讨论后,这里是对Date
对象更有效的引用:
http://www.ecma-international.org/ecma-262/6.0/index.html#sec-date-constructor
答案 1 :(得分:0)
您永远不应该使用Date构造函数或Date.parse(执行相同的操作)来解析日期字符串,始终手动解析字符串。库可以提供帮助,但对于特定格式,解析函数非常简单。
格式MM-dd-yyyy HH:mm:ss不是指定为ES5或更高版本支持的格式,因此它将回退到依赖于实现的启发式算法。某些浏览器可能会将其解析为本地或UTC,有些浏览器可能允许超出范围值而其他浏览器则不允许。有些人可能根本无法解析它。
下面是一个简单的解析函数(没有验证值)。
添加验证需要更多代码,但如果您确信所提供的数据是好的,则不需要它。
要查找两个日期之间的秒数差异,只需从另一个日期中减去一个(以毫秒为单位),然后除以1,000。
function parseMDYhms(s) {
var b = s.split(/\D/);
return new Date(b[2], b[0]-1, b[1], b[3], b[4], b[5]);
}
var d0 = parseMDYhms('01-18-2015 12:52:13');
var d1 = parseMDYhms('01-19-2015 15:23:21');
var diffSeconds = (d1 - d0) / 1000;
document.write('Difference: ' + diffSeconds + ' seconds');