我使用XML从MySQL数据库中抓取了两个日期,如下所示。我想在几秒钟内获得时差。
我写了这个脚本,但它给出了“NaN”
<script type="text/javascript">
function show(){
var t1 = new Date("2014-01-21 13:50:20.123");
var t2 = new Date("2014-01-21 12:50:20.123");
var dif = t1.getTime() - t2.getTime()
var Seconds_from_T1_to_T2 = dif / 1000;
var Seconds_Between_Dates = Math.abs(Seconds_from_T1_to_T2);
document.getElementById("TDIFF_IN_SECONDS").value=Seconds_Between_Dates;
}
</script>
HTML CODE
<body onload="show()">
<input type="text" id="TDIFF_IN_SECONDS" />
</body>
如果有人知道,请帮助我......
答案 0 :(得分:0)
您正在使用的浏览器不支持您的日期对象初始化。
var d = new Date();
var d = new Date(milliseconds);
var d = new Date(dateString);
var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);
您可以在http://www.w3schools.com/jsref/jsref_obj_date.asp
中查看更多详情您可以将日期时间设置为
var t1 = new Date(2014, 1, 21, 13, 50, 20, 123);
Xotic750增加了一个非常好的观点:
根据您使用此浏览器的情况,可能是Date不支持ISO8601解析。需要兼容ECMA5的浏览器。即使这样,一些人也支持空间的日期/时间范围,有些人需要'T'
答案 1 :(得分:0)
如果您的dateString
格式始终相同,那么您可以自己完成,而无需加载jQuery和时刻库。我假设你的时间戳是UTC,ISO8601会认为它是本地的(不同的浏览器和库在这一点上也不同意)。这应该适用于各种浏览器。
MDN是Date比w3schools更好的参考。
HTML
<input type="text" id="TDIFF_IN_SECONDS" />
的Javascript
function parseMyDate(dateString) {
var parts = dateString.split(/[ \-:\.]/g);
parts[1] -= 1;
return new Date(Date.UTC.apply(undefined, parts)).getTime();
}
document.getElementById("TDIFF_IN_SECONDS").value = Math.abs(parseMyDate('2014-01-21 13:50:20.123') -
parseMyDate('2014-01-21 12:50:20.123')) / 1000;
上
答案 2 :(得分:-1)
问题是您正在尝试减去两个日期时间对象。这些不是整数,你不能用这种方式对它们进行数学计算。但是,以下链接将指导您正确的方向:Link
其中,David Hedlund发表了以下文章:
“他会告诉你两个日期之间的差异,以毫秒为单位
var diff = Math.abs(date1 - date2);
在你的例子中,它是
var diff = Math.abs(new Date() - compareDate);
您需要确保compareDate是一个有效的Date对象。
这样的事可能对你有用
var diff = Math.abs(new Date() - new Date(dateStr.replace(/-/g,'/')));
即。将
"2011-02-07 15:13:06"
转换为新的Date('2011/02/07 15:13:06')
,这是Date构造函数可以理解的格式。“
答案 3 :(得分:-1)
使用图书馆让您的生活更轻松 - http://momentjs.com/
需要:jQuery&amp; momentjs。如果您不使用jQuery,可以使用onload
将其更改为纯JS。
$( document ).ready(function() {
var t1 = moment("2014-01-21 13:50:20.123", "YYYY-MM-DD HH:mm:ss.sss");
var t2 = moment("2014-01-21 12:50:20.123", "YYYY-MM-DD HH:mm:ss.sss");
var diff = t1.diff(t2, 'seconds');
$("#diff").val(diff);
});