Javascript 将剩余天数转换为年、月、日

Javascript 将剩余天数转换为年、月、日,javascript,date,Javascript,Date,我正在尝试获取两个日期之间的差异(我的生日和当前日期,以获取我生日之前的剩余时间),但我希望输出格式为('年/月/天);我该怎么做?这就是我迄今为止所尝试的: 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 = birth

我正在尝试获取两个日期之间的差异(我的生日和当前日期,以获取我生日之前的剩余时间),但我希望输出格式为('年/月/天);我该怎么做?这就是我迄今为止所尝试的:

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

提前感谢您

您对模运算符有何看法?:)

这是一个常见的数学运算,比如寻找变化之类的。这样想,如果你有大量的天数,比如说397,你可以通过整数除法(1)得到年数,然后你可以通过一年的模运算得到剩余天数(以天为单位)397%365=32。然后你可以重复这个过程来得到剩余的月数(1…假设是30天的月),然后再按模得到最终的天数2


我不是javascript专业人士,但我认为您需要使用Math.floor(商)以整数格式获得除法结果。

此示例比较当前日期和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;

如果我没弄错的话,我就这样做了。 没有触及原始代码,但添加了一个函数,用于计算总差异天数的dateTime输出

const生日=新日期('11-20-2021')。getTime();
const today=new Date().getTime();
常数dys=(1000*60*60*24);
施工月数=(dys*30);
让totalDayserance=生日-今天;
const formatted=daysToDateTime(TotalDayservance/dys);
console.log(格式化);
函数daysToDateTime(总天数){
var baseVal='';
var formedValues=[
[‘年’,365],
[‘月’,30],
[‘天’,1]
];
对于(var i=0;i=1){
baseVal+=(valueByGroup+formedValues[i][0])+',';
totalDays-=valueByGroup*formedValues[i][1];
}
}
返回baseVal;

}
处理日期和差异可能很困难,因为存在很多边缘情况。这就是为什么我喜欢让一个专门的库来处理这个问题,比如

moment有一个插件(),它完全满足您的需求:

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'

你一个月会考虑什么?
3月2日
2月1日
1个月和1天,或者29天之间有什么区别吗?这已经有了,有一些很好的答案,有图书馆的和没有图书馆的,比如,请原谅无耻的自我推销…:-)老实说!!我的想法与您的想法完全相同,但我认为可能还有其他方法可以解决这个问题,但非常感谢您花时间回答我的问题;)感谢您ECMAScript中给出了除两个数字的余数,严格来说,这不是一个模运算符,请参见。抱歉,我在写问题时可能不清楚,但我需要从中准确输出离我生日还有多少年、月和天。例如,从今天到2021年3月3日还剩多少天。我确实这样做了,但我仍然有“片刻。preciseDiff不是一个函数”,我试图找出问题所在,但似乎没有什么明显的问题。我把我写的几行代码放在这里,也许它会让你了解我所说的
var m1=moment('2017-05-17 00:00:00','YYYY-MM-DD HH:MM:ss');var m2=力矩('2022-05-17 00:00:00','YYYY-MM-DD HH:MM:ss');var diff=力矩精度diff(m1,m2);var str=
Years:${diff.Years},Months:${diff.Months},Days:${diff.Days}
;document.getElementById('Result')。innerHTML=diff
很可能您没有导入
矩精确范围插件
。它是一个插件,所以导入看起来毫无意义,但这并不是因为它实际上修改了
时刻
库。