Kalan günlerin sayısını yıllara, aylara, günlere [kopya] dönüştürme

Dec 14 2020

İki tarih arasındaki farkı elde etmeye çalışıyorum (doğum günüm ve doğum günüme kalan zamanı almak için şu anki tarih), Ama çıktı biçimini ('Yıl / Ay / Gün) olarak istiyorum; Bunu nasıl yapabilirim? şu ana kadar denediğim şey buydu:

 const birthday = new Date ('11-20-2021').getTime();
 const today = new Date ().getTime();
 const dys = (1000*60*60*24);
 const months = (dys*30);
 let differance = birthday-today ; 
 const formatted = Math.round(differance/dys);
 console.log(formatted);`

şimdiden teşekkür ederim

Yanıtlar

AirSquid Dec 14 2020 at 00:06

Modulo operatörü hakkında ne düşünüyorsunuz? :)

Bu, değişiklik bulma gibi yaygın bir matematik işlemidir. Şöyle düşünün, eğer çok sayıda gününüz varsa, 397 diyelim, tamsayı bölme (1) yaparak yıl sayısını elde edebilir, sonra bir yıla kadar modulo yaparak kalan gün sayısını elde edebilirsiniz. kalan (gün olarak) 397% 365 = 32. Ardından, kalan ay sayısını (1 ... 30 gün varsayarak) almak için işlemi tekrarlayabilir ve tekrar, son gün sayısını elde etmek için modulo 2 ...

Ben javascript profesyoneli değilim, ancak tamsayı biçiminde bölmenin sonucunu elde etmek için Math.floor (bölüm) kullanmanız gerektiğini düşünüyorum.

nabil497 Dec 14 2020 at 00:07

bu örnek, geçerli tarih ile 2100/0/14 tarihini karşılaştırır, örnekteki aynı kavramı deneyin ve umarım yardımcı olur:

var today, someday, text;
today = new Date();
someday = new Date();
someday.setFullYear(2100, 0, 14);

if (someday > today) {
  text = "Today is before January 14, 2100.";
} else {
  text = "Today is after January 14, 2100.";
}
document.getElementById("demo").innerHTML = text;
dpwrussell Dec 14 2020 at 00:21

Tarihler ve farklılıklarla çalışmak zor olabilir çünkü çok sayıda uç durum vardır. bu yüzden özel bir kitaplığın bunu halletmesine izin vermeyi tercih ediyorum.https://momentjs.com/

moment bir eklentiye sahiptir (https://www.npmjs.com/package/moment-precise-range-plugin) tam olarak aradığınız şeyi yapan:

import moment from 'moment';
import 'moment-precise-range-plugin';

var m1 = moment('2014-01-01 12:00:00','YYYY-MM-DD HH:mm:ss');
var m2 = moment('2014-02-03 15:04:05','YYYY-MM-DD HH:mm:ss');
var diff = moment.preciseDiff(m1, m2, true); // {years : 0, months : 1, days : 2, hours : 3, minutes : 4, seconds : 5}
var str = `Years: ${diff.years}, Months: ${diff.months}, Days: ${diff.days} `; // 'Years: 0, Months: 1, Days: 2'