JavaScript - İki tarih arasındaki dakikaları alın


Yanıtlar:


204

Bu kodu kontrol edebilirsiniz:

var today = new Date();
var Christmas = new Date("2012-12-25");
var diffMs = (Christmas - today); // milliseconds between now & Christmas
var diffDays = Math.floor(diffMs / 86400000); // days
var diffHrs = Math.floor((diffMs % 86400000) / 3600000); // hours
var diffMins = Math.round(((diffMs % 86400000) % 3600000) / 60000); // minutes
alert(diffDays + " days, " + diffHrs + " hours, " + diffMins + " minutes until Christmas 2009 =)");

veya var diffMins = Math.floor((...atma saniyeye Eğer yuvarlak dakikaya istemiyorsanız.


7
@philk, bu yüzden StackOverflow'a çok değer veriyorum. Birçok mesaj panosunda, cevap sadece bir köprüdür. Burada böyle olsaydı bu harika cevaba sahip olamazdık.
— Andrew Neely

5
Bu yanıtı sınarken bir hata buldum: DiffHrs yanlış olabilir Date nesnesinde dakikaları ayarlarsanız. Örneğin, Noel "12-25-2015 03:55" ve bugün "12-25-2015 02:00" ise, hourDiff iki saattir. Bir saat olmalı.
— HoffZ

29
Math.round(((diffMs % 86400000) % 3600000) / 60000);fark 60 dakikadan fazla olduğunda çalışmıyor
— kuncevic.dev

3
Bunun en az dakika boyunca düzgün çalışmadığını tekrarlamak. Örneğin, 62 dakikalık bir fark aldı ve yuvarlama nedeniyle, 2 dakikalık bir fark olduğunu düşündü.
— Ürdün

6
soruyu doğru cevaplamaz, SADECE dakikadaki farkı hesaplamak yerine, fark gün, saat ve dakika bileşimi olarak hesaplanır ... böylece fark 1 gün 1 saat 1 dakika ise, 1 gösterecektir gün 1 saat 1 dakika, 1501 dakika yerine
— Akhil Gupta

170

2 Date nesnesini çıkarmak, milisaniye cinsinden farkı verir, örn:

var diff = Math.abs(new Date('2011/10/09 12:00') - new Date('2011/10/09 00:00'));

Math.absmutlak farkı kullanabilmek için kullanılır (böylece new Date('2011/10/09 00:00') - new Date('2011/10/09 12:00')aynı sonucu verir).

Sonucu 1000'e bölmek size saniye sayısını verir. Bunu 60'a bölmek size dakika sayısını verir. Tam dakikaya yuvarlamak için Math.floorveya tuşunu kullanın Math.ceil:

var minutes = Math.floor((diff/1000)/60);

Bu örnekte sonuç 720 olacaktır


1
Yip. Ya (Math.floor(seconds/60))+':'+((seconds/60)%60)da kalan saniyelere de ihtiyacınız varsa bir şey
— KooiInc

4
Bence bu daha iyi bir cevap, kabul edilen cevabın farkı 60 dakikadan fazla olduğunda farkı dakikaya dönüştürmediğini fark ettim
— sani

Bu da yanlış. 12:00 00:00 ile aynı olamaz, çünkü bunlar 12 saatlik farktır ...
— Davatar

1
@Davatar aynı olduklarını kim söyledi? sadece 12 saat - 0 saatin 0 saat - 12 saat ile aynı olduğunu belirtir.
— Mark Baijens

Eski yanıt, ancak asla new Date(string)ISO-8601 biçim dizesinden başka bir biçim kullanmamalısınız . Bkz. Date.parse neden yanlış sonuçlar veriyor? veya yalnızca sayı kullanın (ör new Date(2011, 9, 9, 12, 0, 0). ayların 0 temelli olduğunu unutmayın).
— Heretic Maymun

52
var startTime = new Date('2012/10/09 12:00'); 
var endTime = new Date('2013/10/09 12:00');
var difference = endTime.getTime() - startTime.getTime(); // This will give difference in milliseconds
var resultInMinutes = Math.round(difference / 60000);

2
Bu güzel ve basit ve benim için çalıştı. Fikir iki tarih karşılaştırmak olduğu için bana göre daha mantıklı görünüyordu olsa da .getTime () tarihlerden kaldırdım. Teşekkürler.
— Yos

Eski yanıt, ancak asla new Date(string)ISO-8601 biçim dizesinden başka bir biçim kullanmamalısınız . Bkz. Date.parse neden yanlış sonuçlar veriyor? veya yalnızca sayı kullanın (ör new Date(2011, 9, 9, 12, 0, 0). ayların 0 temelli olduğunu unutmayın).
— Heretic Maymun

46

Bu hesaplamayı yapmak için basit bir işlev:

function getMinutesBetweenDates(startDate, endDate) {
    var diff = endDate.getTime() - startDate.getTime();
    return (diff / 60000);
}

24

Bu iki tarih arasındaki farkı dakika cinsinden göstermelidir. Tarayıcınızda deneyin:

const currDate = new Date('Tue Feb 13 2018 13:04:58 GMT+0200 (EET)')
const oldDate  = new Date('Tue Feb 13 2018 12:00:58 GMT+0200 (EET)')


(currDate - oldDate) / 60000 // 64

4
TypeScript size "Bir aritmetik işlemin sol ve sağ tarafı" herhangi bir "," sayı "veya bir numaralandırma türü olmalıdır" hatasını verecektir. Hatayı önlemek için(currDate.getTime() - oldDate.getTime()) / 60000
— Homer

12

Küçük sayılarla çalışmak isteyenler için

const today = new Date();
const endDate = new Date(startDate.setDate(startDate.getDate() + 7));
const days = parseInt((endDate - today) / (1000 * 60 * 60 * 24));
const hours = parseInt(Math.abs(endDate - today) / (1000 * 60 * 60) % 24);
const minutes = parseInt(Math.abs(endDate.getTime() - today.getTime()) / (1000 * 60) % 60);
const seconds = parseInt(Math.abs(endDate.getTime() - today.getTime()) / (1000) % 60); 

9

Bu sorun moment.js ile kolayca çözülebilir, örneğin:

var difference = mostDate.diff(minorDate, "minutes");

İkinci parametre başka parametreler için değiştirilebilir, moment.js belgelerine bakın.

örneğin: "günler", "saatler", "dakikalar" vb.

http://momentjs.com/docs/

Moment.js için CDN'yi burada bulabilirsiniz:

https://cdnjs.com/libraries/moment.js

Teşekkürler.

DÜZENLE:

mostDate ve minorDate bir moment tipi olmalıdır.


2

Düğümde benzer bir şeyi çözdüğüm eğlenceli.

function formatTimeDiff(date1, date2) {
  return Array(3)
    .fill([3600, date1.getTime() - date2.getTime()])
    .map((v, i, a) => {
      a[i+1] = [a[i][0]/60, ((v[1] / (v[0] * 1000)) % 1) * (v[0] * 1000)];
      return `0${Math.floor(v[1] / (v[0] * 1000))}`.slice(-2);
    }).join(':');
}

const millis = 1000;
const utcEnd = new Date(1541424202 * millis);
const utcStart = new Date(1541389579 * millis);
const utcDiff = formatTimeDiff(utcEnd, utcStart);

console.log(`Dates:
  Start   : ${utcStart}
  Stop    : ${utcEnd}
  Elapsed : ${utcDiff}
  `);

/*
Outputs:

Dates:
  Start   : Mon Nov 05 2018 03:46:19 GMT+0000 (UTC)
  Stop    : Mon Nov 05 2018 13:23:22 GMT+0000 (UTC)
  Elapsed : 09:37:02
*/

En eylem görebilirsiniz https://repl.it/@GioCirque/TimeSpan-Formatting


0

Aşağıdaki kod benim için çalıştı,

function timeDiffCalc(dateNow,dateFuture) {
    var newYear1 = new Date(dateNow);
    var newYear2 = new Date(dateFuture);

        var dif = (newYear2 - newYear1);
        var dif = Math.round((dif/1000)/60);
        console.log(dif);

}

0

Aşağıdaki gibi yapabilirsiniz:

  1. Get difference of dates(Fark milisaniye cinsinden olacak)
  2. Dönüştürme millisecondsiçine minutesyanims/1000/60

Kod:

let dateOne = new Date("2020-07-10");
let dateTwo = new Date("2020-07-11");

let msDifference =  dateTwo - dateOne;
let minutes = Math.floor(msDifference/1000/60);
console.log("Minutes between two dates =",minutes);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.