两个日期之间有多少秒?

ste*_*ven 167 javascript time date

所以,我有两个日期YYYY-MM-DDZZZZ-NN-EE

我怎样才能知道它们之间有多少秒?

Mar*_*tin 219

我将YYYY和ZZZZ表示为表示年份的整数值,MM和NN表示整数值,表示一年中的月份,DD&EE表示整数值表示月份的日期.

var t1 = new Date(YYYY, MM, DD, 0, 0, 0, 0);
var t2 = new Date(ZZZZ, NN, EE, 0, 0, 0, 0);
var dif = t1.getTime() - t2.getTime();

var Seconds_from_T1_to_T2 = dif / 1000;
var Seconds_Between_Dates = Math.abs(Seconds_from_T1_to_T2);
Run Code Online (Sandbox Code Playgroud)

未来参考的便利来源是MDN站点

或者,如果您的日期采用javascript可以解析的格式

var dif = Date.parse(MM + " " + DD + ", " + YYYY) - Date.parse(NN + " " + EE + ", " + ZZZZ);
Run Code Online (Sandbox Code Playgroud)

然后你可以使用该值作为毫秒的差异(我的两个示例中的dif具有相同的含义)


Set*_*eth 76

只需减去:

var a = new Date();
alert("Wait a few seconds, then click OK");

var b = new Date();
var difference = (b - a) / 1000;

alert("You waited: " + difference + " seconds");
Run Code Online (Sandbox Code Playgroud)


rme*_*dor 14

如果你的一个或两个日期都在将来,那么如果你想要第二个准确度,我恐怕你是SOL.UTC时间有闰秒,直到它们发生前大约6个月才知道,因此任何超出该时间的日期可能会在几秒钟内不准确(实际上,由于人们不经常更新他们的机器,所以可能会发现将来的任何时间都会关闭几秒钟.

这样可以很好地解释日期/时间库的设计理论及其原因:http://www.boost.org/doc/libs/1_41_0/doc/html/date_time/details.html#date_time.tradeoffs

  • +1提到闰秒问题!如果处理不当,即使是那些应该更了解的人(POSIX委员会,我看着你......),这是非常令人沮丧的. (7认同)
  • 值得一提的是,ECMA 标准明确忽略闰秒(即:甚至*过去* 闰秒):[在时间值中忽略闰秒。假设每天正好有 86,400,000 毫秒](http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.1)。 (2认同)

Jus*_*son 6

var a = new Date("2010 jan 10"),
    b = new Date("2010 jan 9");

alert(
    a + "\n" + 
    b + "\n" +
    "Difference: " + ((+a - +b) / 1000)
);
Run Code Online (Sandbox Code Playgroud)


小智 6

你可以做到这一点.

var secondBetweenTwoDate = Math.abs((new Date().getTime() - oldDate.getTime()) / 1000);
Run Code Online (Sandbox Code Playgroud)


Fer*_*Pie 6

简单的方法:

function diff_hours(dt2, dt1) 
 {

  var diff =(dt2.getTime() - dt1.getTime()) / 1000;
  diff /= (60 * 60);
  return Math.abs(Math.round(diff));

 }


function diff_minutes(dt2, dt1) 
 {

  var diff =(dt2.getTime() - dt1.getTime()) / 1000;
  diff /= (60);
  return Math.abs(Math.round(diff));

 }

function diff_seconds(dt2, dt1) 
 {

  var diff =(dt2.getTime() - dt1.getTime()) / 1000;
  return Math.abs(Math.round(diff));

 }

function diff_miliseconds(dt2, dt1) 
 {

  var diff =(dt2.getTime() - dt1.getTime());
  return Math.abs(Math.round(diff));

 }


dt1 = new Date(2014,10,2);
dt2 = new Date(2014,10,3);
console.log(diff_hours(dt1, dt2));


dt1 = new Date("October 13, 2014 08:11:00");
dt2 = new Date("October 14, 2014 11:13:00");
console.log(diff_hours(dt1, dt2));

console.log(diff_minutes(dt1, dt2));

console.log(diff_seconds(dt1, dt2));

console.log(diff_miliseconds(dt1, dt2));
Run Code Online (Sandbox Code Playgroud)


Jac*_*kin 5

创建两个Date对象并调用valueOf()它们,然后比较它们.

JavaScript日期对象参考

  • getSeconds() - >返回秒.(范围是0-59).应该是valueOf()或getTime() (2认同)