簡體   English   中英

如何計算兩個日期之間的秒數?

[英]How do I calculate how many seconds between two dates?

所以我有兩個日期YYYY-MM-DDZZZZ-NN-EE

我怎樣才能知道它們之間有多少秒?

我將 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);

MDN 站點是供將來參考的方便來源

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

var dif = Date.parse(MM + " " + DD + ", " + YYYY) - Date.parse(NN + " " + EE + ", " + ZZZZ);

然后您可以將該值用作以毫秒為單位的差異(我的兩個示例中的差異具有相同的含義)

只需減去:

 var a = new Date(); alert("Wait a few seconds, then click OK"); var b = new Date(); var difference = (b - a) / 1000; console.log("You waited: " + difference + " seconds");

你可以簡單地做到這一點。

var secondBetweenTwoDate = Math.abs((new Date().getTime() - oldDate.getTime()) / 1000);

如果您的一個或兩個日期都在未來,那么如果您想要秒精度,恐怕您就是 SOL。 UTC 時間有閏秒,直到它們發生前大約 6 個月才知道,因此任何比這更遠的日期都可能不准確一些秒數(實際上,由於人們不經常更新他們的機器,你可能會發現未來的任何時間都偏離了幾秒)。

這很好地解釋了設計日期/時間庫的理論以及為什么會這樣:http: //www.boost.org/doc/libs/1_41_0/doc/html/date_time/details.html#date_time.tradeoffs

創建兩個Date對象並在兩者上調用valueOf() ,然后比較它們。

JavaScript 日期對象參考

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

alert(
    a + "\n" + 
    b + "\n" +
    "Difference: " + ((+a - +b) / 1000)
);

簡單的方法:

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));
function parseDate(str) {
  const [dateStr, timeStr] = str.split(' ');
  const [m,d,y] = dateStr.split('/');
  const [h,min] = timeStr.split(':');
  const date = new Date(y,m,d,h,min,0, 0);
  
  return date;
}

const date1 = parseDate('28/6/2022 22:55');
const date2 = parseDate('28/6/2022 22:58');
const diffInSeconds = (date2 - date1) / 1000;

console.log(diffInSeconds)

在 bash 中:

bc <<< "$(date --date='1 week ago' +%s) - \
    $(date --date='Sun,  29 Feb 2004 16:21:42 -0800' +%s)"

它確實需要安裝 bc 和 gnu date。

.Net 提供 TimeSpan 類來為您計算。

var time1 = new Date(YYYY, MM, DD, 0, 0, 0, 0)
var time2 = new Date(ZZZZ, NN, EE, 0, 0, 0, 0)

Dim ts As TimeSpan = time2.Subtract(time1)

ts.TotalSeconds

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM