İki datetimes arasındaki zaman farkı olsun
Momentjs ile her şey daha envolving bazı Tarihler yapabileceğimi biliyorum. Ama utanç verici, zor zamanlar basit gibi görünen bir şeyler yapmak için çabalıyorum: Biyokimya arasındaki fark 2 kat.
Örnek:
var now = "04/09/2013 15:00:00";
var then = "04/09/2013 14:20:30";
//expected result:
"00:39:30"
ben ne çalıştı:
var now = moment("04/09/2013 15:00:00");
var then = moment("04/09/2013 14:20:30");
console.log(moment(moment.duration(now.diff(then))).format("hh:mm:ss"))
//outputs 10:39:30
"10". Bu nedir anlamıyorum Eğer ki alakalı olup olmadığını utc-0300 yani biz Brezilya'da yaşıyorum.
moment.duration(now.diff(then))
sonucu Doğru iç değerleri ile bir süre
days: 0
hours: 0
milliseconds: 0
minutes: 39
months: 0
seconds: 30
years: 0
Bir zaman aralığı için momentjs bir Süre dönüştürmek için nasıl? yani sorum şu ki: Eminim kullanabilirsiniz
duration.get("hours") ":" duration.get("minutes") : duration.get("seconds")
ama bir şey daha olduğunu hissediyorumzarifkayıp ben tamamen bu.
güncelleme
daha yakın, yukarıdaki örnekte arıyor now
:
Tue Apr 09 2013 15:00:00 GMT-0300 (E. South America Standard Time)…}
ve moment(moment.duration(now.diff(then)))
:
Wed Dec 31 1969 22:39:30 GMT-0200 (E. South America Daylight Time)…}
İkinci değer Yaz Saati (-0200) neden emin değilim... ama tarihler sevmiyorum eminim :(
güncelleme 2
Peki, değeri muhtemelen 31/12/1969 gün ışığı zaman nerede kullanıldığını bir tarih... hepsi bu kadar, çünkü -0200.
CEVAP
Bu çalışması gerekir:
var now = "04/09/2013 15:00:00";
var then = "04/09/2013 14:20:30";
moment.utc(moment(now,"DD/MM/YYYY HH:mm:ss").diff(moment(then,"DD/MM/YYYY HH:mm:ss"))).format("HH:mm:ss")
// outputs: "00:39:30"
Ama eğer 24 saat veya daha fazla varsa, saat sıfırlanır unutmayın.
GÜNCELLEME
Eğer büyük veya 24 saatlik süreler için geçerli bir yanıt almak istiyorsanız, o zaman bu gibi şeyler yerine yapmak zorunda kalacaksın:
var now = "04/09/2013 15:00:00";
var then = "02/09/2013 14:20:30";
var ms = moment(now,"DD/MM/YYYY HH:mm:ss").diff(moment(then,"DD/MM/YYYY HH:mm:ss"));
var d = moment.duration(ms);
var s = Math.floor(d.asHours()) moment.utc(ms).format(":mm:ss");
// outputs: "48:39:30"
Bir kısayol olarak utc zaman kullanıyorum unutmayın. d.minutes()
d.seconds()
ayrı ayrı çekebilirsin, ama aynı zamanda onları zeropad gerekir.
İkinci Güncelleme
Ayrıca bu amaç için özel olarak yazılmış yeni bir eklenti ile ilgilenebilirsiniz. Ayrıntılar için moment-duration-format bkz.
Nasıl dakika içinde iki Joda-Zaman Dat...
Nasıl PHP dakikalık zaman farkı olsun...
Nasıl python iki datetime nesneler ara...
Nasıl iki datetime nesneler arasındaki...
MySQL iki datetimes arasındaki farkı h...