Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当前日期两次之间的时间_Javascript_Date_Datetime - Fatal编程技术网

Javascript 当前日期两次之间的时间

Javascript 当前日期两次之间的时间,javascript,date,datetime,Javascript,Date,Datetime,我试图使用JavaScript计算当前日期两次之间的时间。还有其他类似的问题,但似乎没有一个有效,我能找到的多数支持票也很少 我有以下几行代码失败:var diff=newdate(time1-time2),当收到警报时,它总是给我一个无效日期,因此它显然失败了。我不明白为什么 初始日期以:hh:mm:ss格式添加到输入字段中。我正在使用jQuery $(函数(){ dateString等于:14-01-2013 23:00您将dateString中的字段向后。交换年份和日期字段 > ne

我试图使用JavaScript计算当前日期两次之间的时间。还有其他类似的问题,但似乎没有一个有效,我能找到的多数支持票也很少

我有以下几行代码失败:
var diff=newdate(time1-time2)
,当收到警报时,它总是给我一个
无效日期
,因此它显然失败了。我不明白为什么

初始日期以:hh:mm:ss格式添加到输入字段中。我正在使用jQuery

$(函数(){


dateString
等于:14-01-2013 23:00

您将
dateString
中的字段向后。交换年份和日期字段

> new Date('14-01-2013 23:00')
Invalid Date
> new Date('2013-01-14 23:00')
Mon Jan 14 2013 23:00:00 GMT-0800 (PST)

您将
dateString
中的字段向后放置。交换年份和日期字段

> new Date('14-01-2013 23:00')
Invalid Date
> new Date('2013-01-14 23:00')
Mon Jan 14 2013 23:00:00 GMT-0800 (PST)

dd-MM-yyyy-HH:MM
未被
new-Date()
识别为有效的时间格式。不过您有几个选项:

  • 使用斜杠而不是破折号:
    dd/MM/yyyy HH:MM
    正确解析日期字符串
  • 使用ISO日期字符串:
    yyyy-MM-dd HH:MM
  • 自己构建
    Date
    对象
对于第二个选项,因为您只关心时间,所以您可以自己拆分时间字符串并将其传递给
Date.setHours(h,m,s)


dd-MM-yyyy-HH:MM
未被
new-Date()
识别为有效的时间格式。不过您有几个选项:

  • 使用斜杠而不是破折号:
    dd/MM/yyyy HH:MM
    正确解析日期字符串
  • 使用ISO日期字符串:
    yyyy-MM-dd HH:MM
  • 自己构建
    Date
    对象
对于第二个选项,因为您只关心时间,所以您可以自己拆分时间字符串并将其传递给
Date.setHours(h,m,s)


如果您试图计算两个日期之间的时间差,则不需要创建新的日期对象来计算

  var time1 = new Date(dateString).getTime();
  var time2 = new Date().getTime();

  var diff = time1 - time2;// number of milliseconds 

  var seconds = diff/1000;
  var minutes = seconds/60;
  var hours = minutes/60;
编辑:您还需要考虑broofa的答案 确保日期字符串的格式正确


getTime函数返回自1970年1月1日以来的毫秒数。因此,减去这两个值后,每个日期对象之间的毫秒数就剩下了。如果要将该值传递给日期构造函数,则生成的日期对象将不是您所期望的。如果要计算e两个日期之间的时间差,则无需创建新的日期对象即可

  var time1 = new Date(dateString).getTime();
  var time2 = new Date().getTime();

  var diff = time1 - time2;// number of milliseconds 

  var seconds = diff/1000;
  var minutes = seconds/60;
  var hours = minutes/60;
编辑:您还需要考虑broofa的答案 确保日期字符串的格式正确


getTime函数返回自1970年1月1日以来的毫秒数。因此,减去这两个值后,每个日期对象之间的毫秒数就剩下了。如果要将该值传递给日期构造函数,则生成的日期对象将不是您所期望的。请参见
datestring
time1
中的ime是
NaN
,因此
diff
将是。使用此选项可能更好:

var date = new Date();
var match = /^(\d+):(\d+):(\d+)$/.exec($('#starttime').val()); // enforcing format
if (!match)
    return alert("Invalid input!"); // abort
date.setHours(parseInt(match[1], 10));
date.setMinutes(parseInt(match[2], 10));
date.setSeconds(parseInt(match[3], 10));

var diff = Date.now() - date;

您的
datestring
time1
NaN
,因此
diff
将是无效的时间。最好使用此选项:

var date = new Date();
var match = /^(\d+):(\d+):(\d+)$/.exec($('#starttime').val()); // enforcing format
if (!match)
    return alert("Invalid input!"); // abort
date.setHours(parseInt(match[1], 10));
date.setMinutes(parseInt(match[2], 10));
date.setSeconds(parseInt(match[3], 10));

var diff = Date.now() - date;
新日期(dateString).getTime();
新日期('14-01-2013 23:00')返回“无效日期”
新日期(dateString).getTime();
新日期('14-01-2013 23:00')
返回“无效日期”