残りの日数を年、月、日に変換する[重複]
Dec 14 2020
2つの日付(私の誕生日と現在の日付で誕生日までの残り時間を取得する)の差を取得しようとしていますが、出力形式を( '年/月/日)にします。どうやってやるの?それは私がこれまでに試したことです:
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);`
前もって感謝します
回答
AirSquid Dec 14 2020 at 00:06
モジュロ演算子についてどう思いますか?:)
これは、変化を見つけるなどの一般的な数学演算です。このように考えると、たとえば397のように日数が多い場合は、整数除算(1)を実行して年数を取得できます。次に、1年を法として剰余を取得して、余り(日数)397%365 = 32。次に、このプロセスを繰り返して、残りの月数(1 ... 30日月と仮定)を取得し、モジュロを使用して最終日数2 ...を取得できます。
私はJavaScriptのプロではありませんが、整数形式で除算の結果を取得するには、Math.floor(quotient)を使用する必要があると思います。
nabil497 Dec 14 2020 at 00:07
この例では、現在の日付と2100/0/14の日付を比較します。この例で同じ概念を試してみて、役立つことを願っています。
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
エッジケースがたくさんあるため、日付や違いを処理するのは難しい場合があります。これが、専用のライブラリにこれを処理させることを好む理由です。https://momentjs.com/
瞬間にプラグインがあります(https://www.npmjs.com/package/moment-precise-range-plugin)これはあなたが探していることを正確に行います:
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'