我有一个 startDate 和一个 endDate 存储在 SQLite 数据库中,需要使用 javascript 计算两个日期时间之间的分钟和秒差。
例如:
startDate = 2012-10-07 11:01:13
endDate = 2012-10-07 12:42:13
虽然我在 SO 上阅读了大量类似的问题,但只能找到与计算相关的内容作为选择的一部分。
最佳答案
将字符串转换为 JS Date
对象,减去日期,并使用一些算术从结果中计算小时/秒。像这样的东西:
function convertMS(ms) {
var d, h, m, s, ts, tm, th;
s = ts = Math.floor(ms / 1000);
m = tm = Math.floor(s / 60);
s = s % 60;
h = th = Math.floor(m / 60);
m = m % 60;
d = Math.floor(h / 24);
h = h % 24;
return { d: d, h: h, m: m, s: s, tm: tm, th: th, ts: ts};
};
var start = new Date('2012-10-07 11:01:13'.split('-').join('/'))
,end = new Date('2012-10-07 12:42:13'.split('-').join('/'))
,dif = convertMS(end - start);
console.log(dif.h+':'+dif.m); //=> 1:41
console.log('total minutes dif: '+dif.tm); //=> total minutes dif: 101
console.log('total seconds dif: '+dif.ts); //=> total seconds dif: 6060
[根据评论编辑]
以提供的格式“手动”解析日期字符串:
Date.tryParse = function(ds){
var arr = ds.match(/\d+/g)
,err = 'Expected at least yyyy'
,dat = arr.length && String(arr[0]).length === 4
? doParse.apply(null,arr) : err;
return dat;
function doParse(y,m,d,h,mi,s,ms){
var dat = new Date(+y,(+m-1)||0,+d||1,+h||0,+mi||0,+s||0,+ms||0);
return isNaN(dat) ? new Date : dat;
}
}
var start = Date.tryParse('2012-10-07 11:01:13'); //=> Sun Oct 07 2012 11:01:13
var test = Date.tryParse('2009'); //=> Sun Jan 01 2009 00:00:00
关于javascript - 计算 Javascript 中 2 个 SQLite 日期时间之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12768519/