1

我想要两个日期时间之间的持续时间。我有开始日期、开始时间、结束日期和结束时间。现在我必须找出它们之间的区别。

实际上我已经尝试过使用以下代码,但我收到了类似“无效日期”的警报。

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 模拟器中运行时,我收到了这些警报消息。

请帮助我如何获得它?如何实施?

4

3 回答 3

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

于 2013-10-30T12:26:57.543 回答
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);
}
于 2013-10-30T12:27:10.627 回答
0

尝试将时间戳格式化为 isoformat,以便 javascript 识别它们。(你在日期和时间之间加上一个“T”)。一个例子:'2013-10-29T10:10:00'

于 2013-10-30T12:22:10.133 回答