Javascript 当前日期两次之间的时间
我试图使用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
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')
返回“无效日期”