如何从日期/时间戳中减去两个不同的日期

How to subtract two different dates from a date/time stamp?

本文关键字:日期 两个 时间戳      更新时间:2023-09-26

我需要从像2016-01-27T01:10:57.569000+00:00这样的日期时间中减去像1/26/2015这样的日期。从我所读到的内容来看,将两者转换为与纪元的距离(以毫秒为单位),然后减去是最简单的方法。我尝试过使用各种方法,但所有方法似乎都说2016-01-27T01:10:57.569000+00:00是无效数据。该方法.getTime()适用于1/26/2015格式,但它无法读取2016-01-27T01:10:57.569000+00:00

如何将日期/时间 UTC 时间转换为毫秒?

以一种复杂的方式,您可以使用正则表达式将日期的每个部分提取为字符串,然后在具有所有参数的new Date中使用它们:

function getTimeDifference(){
  var regEx = /('d{4})-('d{2})-('d{2})T('d{2}):('d{2}):(['d.]+)/;
  var dateString = '2016-01-27T01:10:57.569000+00:00';
  var r = regEx.exec( dateString );
  var date1 = new Date(r[1], r[2]-1, r[3], r[4], r[5], r[6]); // Notice the -1 in the month
  var date2 = new Date('1/26/2015');
  var difference = date1 - date2;
  Logger.log(difference);
}

我最终使用了这个。当我调用parseDate()时,我使用getTime()以毫秒为单位获取日期,然后减去它们并将它们转换为天。对于我的用例,时间不必减少到秒,但如果是这样,从字符串中解析更多信息就不难了。我最初遇到了麻烦,因为作为一个初学者 Javascript 编写者,我不知道为什么应用程序脚本不接受这种格式进入日期构造函数。

function parseDate(str) {
//This should accept 'YYYY-MM-DD' OR '2016-01-27T01:10:57.569000+00:00'
if(str.length == 10){
    var mdy = str.split('-');
    return new Date(mdy[0], mdy[1]-1, mdy[2]);
    }
else
   {
   var mdy = str.split('-');
   var time = mdy[2].split('T');
   var hms = time[1].split(':');
   return new Date(mdy[0], mdy[1]-1, time[0], hms[0], hms [1]);
   
   }
}

如果您确信日期字符串中的值将始终有效,并且ISO8601字符串将始终具有 00:00(即 UTC)的偏移量,则简单的解析函数为:

// Parse ISO 8601 format 2016-01-27T01:10:57.569000+00:00
function parseISOUTC(s) {
  var b = s.split(/'D/);
  return new Date(Date.UTC(b[0],b[1]-1,b[2],b[3],b[4],b[5],b[6]));
}
document.write(parseISOUTC('2016-02-04T00:00:00.000+00:00'));
// Parse US format m/d/y
function parseMDY(s) {
  var b = s.split(/'D/);
  return new Date(b[2],b[0]-1,b[1]);
}
    
document.write('<br>'+ parseMDY('2/4/2016'))    
    
document.write('<br>'+ (parseISOUTC('2016-02-04T00:00:00.000+00:00') - parseMDY('2/4/2016')))

请注意,第一个字符串是 UTC,第二个字符串将被视为本地字符串(根据 ECMAScript 2015),因此 2016-02-04T00:00:00.000+00:00 和 2/4/2016 之间的差异将是主机系统的时区偏移量。