js 如何把两个日期时间之间的时间差转换成秒

在这里先谢谢各位大哥大姐来抽空回答我的问题!

let startTime = '2020-07-08 13:24:27'
let endTime = '2020-07-10 16:10:27'

我应该怎么算出这两个时间相差多少秒呢,

还有一种情况是

let startTime = '2020-07-08'
let endTime = '2020-07-10'

阅读 13.6k
6 个回答

因为你给出的时间字符串是符合Date对象解析初始化的字符串,所以处理相对比较简单

  1. 获得2个由字符串初始化的Date对象
  2. 2个Date对象的getTime方法返回值分别表征从Jan 1, 1970, 00:00:00.000 GMT起经历的毫秒数。
  3. 2中的返回值差即两个字符串对应时间相差毫秒数,其除以1000即为相差秒数。

对应代码为

const var DateInitFromStr=function(inStr){  
    // 这个函数是支持你现在提供的2种数据格式的,包括了'2020-07-08 13:24:27'和'2020-07-01'
    // 对于'2020-07-01',等效于'2020-07-01 00:00:00.000'
    return (New Date(inStr));
}
const var MyGetTimeS=function(inDStr1,inDStr2){
    let D1=DateInitFromStr(inDStr1);
    let D2=DateInitFromStr(inDStr2);
    return ( (D1.getTime()-D2.getTime())/1000 );
}
let startTime = '2020-07-08 13:24:27'  ;
let endTime = '2020-07-10 16:10:27'    ;
console.log('diff second(s):' + MyGetTimeS(startTime,endTime) );
startTime = '2020-07-08'   ;
endTime = '2020-07-10' ;
console.log('diff second(s):' + MyGetTimeS(startTime,endTime) );

不过需要注意的是,其实Date的构造函数解析日期字符串能力囿于具体的浏览器实现,可能有差异,有时并不推荐直接采用,而是自行构建 解析处理方法,

getTime()获取毫秒数 相减 /1000

// => 182760000 毫秒
new Date('2020-07-10 16:10:27').getTime()-new Date('2020-07-08 13:24:27').getTime()

//获取时间差
var TimeDifference = (date,date1)=>{

var startDate = date;
var oldTime = date1
oldTime = oldTime.replace(new RegExp("-","gm"),"/");
startDate= startDate.replace(new RegExp("-","gm"),"/");
var newTime = (new Date(startDate)).getTime(); //得到毫秒数
var endTime = (new Date(oldTime)).getTime(); //得到毫秒数
var Time = (newTime - endTime)/1000
var dates = new Date(Time)
var day = setDb(Math.floor(Time / 60 / 60 / 24)); //天数
var hour = setDb(Math.floor(Time / 60 / 60) % 24); //时
var min = setDb(Math.floor(Time / 60) % 60); //Math.floor(num / 60) % 60     分
var sec = setDb(Math.floor(Time % 60)); //06 秒
return {
    day:day,
    hour:hour,
    min:min,
    sec:sec,
    time:Time
}

}

思路:

你的两个字符串的时间格式都可是被Date类的构造函数所接受的,所以可以直接创建对应的 Date 对象。

Date.prototype.getTime() 函数可以获取 Date对象所表示的毫秒值,两者相减即可获得相差的毫秒数。

将毫秒除以 1000 即可得到相差的秒数。

核心代码:

const startDate = new Date(startTime)
const endDate = new Date(endTime)
const diffInMills = endDate.getTime() - startDate.getTime()
const diffInSec = diffInMills / 1000
console.log('diff second(s):', diffInSec)

套入你给的示例:

let startTime = '2020-07-08 13:24:27'
let endTime = '2020-07-10 16:10:27';
//
// or
//
// let startTime = '2020-07-08'
// let endTime = '2020-07-10'

const startDate = new Date(startTime)
const endDate = new Date(endTime)
const diffInMills = endDate.getTime() - startDate.getTime()
const diffInSec = diffInMills / 1000

// 182760
// 172800
console.log('diff second(s):', diffInSec)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏