javascript - 计算 Javascript 中 2 个 SQLite 日期时间之间的差异

标签 javascript sqlite datetime

我有一个 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/

相关文章:

java - 获取投球手计数以显示在 League RecyclerView 中

mysql - Google Apps 脚本、JDBC 和 MySQL 不适用于日期 0000-00-00

MYSQL 查询查找紧邻的下一个日期时间

javascript - 我的 Rails 表单无法与 has_scope 一起使用

javascript - jQuery ajax 基本身份验证不起作用

android - 终止Room数据库程序android

python - 我如何在 python 中将时间戳转换为日期?

javascript - UI Bootstrap - 如何在下拉菜单打开时防止工具提示打开

javascript - 如何使用 jQuery 激活文本区域?

android - 从 Service 和 onClick 访问 sqlite 数据库 android 时发生冲突