我想要在两个日期时间之间的持续时间。我有开始日期,开始时间,结束日期和结束时间。现在我必须找到它们之间的区别。
其实我已尝试使用以下代码,但我收到了“无效日期”这样的提醒。
function myfunction()
{
var start_dt = '2013-10-29 10:10:00';
var end_dt = '2013-10-30 10:10:00';
var new_st_dt=new Date(start_dt);
var new_end_dt=new Date(end_dt);
alert('new_st_dt:'+new_st_dt);
alert('new_end_dt:'+new_end_dt);
var duration=new_end_dt - new_st_dt;
alert('duration:'+duration);
}
警报消息如下:
new_st_dt:invalid date
new_end_dt: invalid date
duration:NaN
当我在android模拟器中运行时,我收到了这些警报消息。
请帮我怎么弄?如何实现这个?
答案 0 :(得分:1)
您将无效的ISO日期字符串传递给该Date()
构造函数。它需要一个像
YYYY-MM-DDThh:mm:ss
例如
2013-10-29T10:10:00
所以你基本上忘记了T
来分隔日期和时间。但即使浏览器现在读入ISO字符串,也不会有用于计算的unix时间戳。你可以打电话给
Date.parse( '2013-10-29T10:10:00' ); // returns a timestamp
或者你需要显式解析 Date对象,比如
var duration=(+new_end_dt) - (+new_st_dt);
进一步阅读:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse
答案 1 :(得分:0)
尝试将时间戳格式化为isoformat,以便javascript识别它们。 (你在日期和时间之间加上一个“T”)。例如:'2013-10-29T10:10:00'
答案 2 :(得分:0)
function dateDiff(){
var start_dt = '2013-10-29 10:10:00';
var end_dt = '2013-10-30 10:10:00';
var d1= start_dt ;
d1.split("-");
var d2= end_dt ;
d2.split("-");
var t1 = new Date(d2[0],d2[1],d2[2]);
var t2 = new Date(d1[0],d1[1],d1[2]);
var dif = t1.getTime() - t2.getTime();
var Seconds_from_T1_to_T2 = dif / 1000;
return Math.abs(Seconds_from_T1_to_T2);
}