Ubah jumlah hari yang tersisa menjadi tahun, bulan, hari [duplikat]

Dec 14 2020

Saya mencoba untuk mendapatkan perbedaan antara dua tanggal (ulang tahun saya dan tanggal sekarang untuk mendapatkan waktu yang tersisa hingga hari ulang tahun saya), Tapi saya ingin format keluaran dalam ('Tahun / Bulan / Hari); Bagaimana saya bisa melakukan itu? itulah yang saya coba sejauh ini:

 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);`

Terima kasih sebelumnya

Jawaban

AirSquid Dec 14 2020 at 00:06

Bagaimana perasaan Anda tentang operator modulo? :)

Ini adalah operasi matematika yang umum, seperti mencari perubahan atau semacamnya. Anggap saja seperti ini, jika Anda memiliki banyak hari, katakanlah 397, Anda bisa mendapatkan jumlah tahun dengan melakukan pembagian integer (1), maka Anda bisa mendapatkan jumlah hari yang tersisa dengan melakukan modulo setahun untuk mendapatkan sisa (dalam hari) 397% 365 = 32. Kemudian Anda dapat mengulangi proses untuk mendapatkan jumlah bulan yang tersisa (1 ... dengan asumsi 30 hari bulan) dan lagi, modulo untuk mendapatkan jumlah akhir hari 2 ...

Saya bukan javascript pro, tapi saya rasa Anda perlu menggunakan Math.floor (hasil bagi) untuk mendapatkan hasil pembagian dalam format integer.

nabil497 Dec 14 2020 at 00:07

Contoh ini membandingkan antara tanggal saat ini dan tanggal 2100/0/14 coba konsep yang sama di contoh dan saya harap ini membantu:

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

Bekerja dengan tanggal dan perbedaan bisa jadi sulit karena ada banyak kasus tepi. itulah sebabnya saya lebih suka membiarkan perpustakaan khusus menangani ini, sepertihttps://momentjs.com/

momen memiliki plugin (https://www.npmjs.com/package/moment-precise-range-plugin) yang melakukan apa yang Anda cari:

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'