如何在javascript中获取两个日期时间之间的时差?

时间:2013-10-30 12:18:46

标签: javascript android datetime

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

其实我已尝试使用以下代码,但我收到了“无效日期”这样的提醒。

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

请帮我怎么弄?如何实现这个?

3 个答案:

答案 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);
}