Javascript 如何显示日期后的年、月、周和日

Javascript 如何显示日期后的年、月、周和日,javascript,html,time,counter,countdown,Javascript,Html,Time,Counter,Countdown,希望大家都好, 我一直在努力寻找一种方法,以年、月、周、日来显示自某个特定日期以来经过的时间。我所发现的最接近的是下面这个,但我可以很好地解决如何让它显示年份和月份的问题 任何提示都将不胜感激 谢谢 window.onload=function(){ doTime('017年1月1日,00:00:01'); } 函数doTime(then){ 现在=新日期(); 然后=新日期(然后); 差异=(现在-那时); 天数=数学下限(差/(60*60*1000*24)*1); 小时数=数学楼层((差值

希望大家都好,

我一直在努力寻找一种方法,以年、月、周、日来显示自某个特定日期以来经过的时间。我所发现的最接近的是下面这个,但我可以很好地解决如何让它显示年份和月份的问题

任何提示都将不胜感激

谢谢

window.onload=function(){
doTime('017年1月1日,00:00:01');
}
函数doTime(then){
现在=新日期();
然后=新日期(然后);
差异=(现在-那时);
天数=数学下限(差/(60*60*1000*24)*1);
小时数=数学楼层((差值%(60*60*1000*24))/(60*60*1000*1);
分钟=数学楼层((差异%(60*60*1000*24))%(60*60*1000))/(60*1000)*1);
秒=数学楼层(((差异%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1);
document.getElementById('timer').firstChild.nodeValue=
+天+天+小时+小时+分钟+分钟+秒+秒;
clearTimeout(doTime.to);
doTime.to=setTimeout(函数(){
多蒂姆(当时);
}, 1000);
}
简单的近似差异
函数计算差异(然后字符串){
常数秒=1000
常数分钟=60*秒
常数小时=60*分钟
常数日=24*小时
施工月=30*天//大约
施工年份=365*天//大约
const now=新日期();
const-then=新日期(n字符串);
让差异=(现在-那时);
常量时间=[{year}、{month}、{day}、{hour}、{minute}、{second}].map((项,i,a)=>{
常量[[unitName,unit]]=对象项(项)
常数单位=差值/单位| 0
差值-=单位*单位
常量可能复数=单位===1?”:“s”
返回单位>0?单位+“”+单位名称+可能复数:“”
}).filter(x=>x)
const formattedTime=time.length>1?[…time.slice(0,-1),“and”,time.slice(-1)]。join(“”):time[1]
返回格式化时间
}
函数displayDifference(){
displayBox.textContent=calculateDifference(dateInput.value+“,”+timeInput.value)
}
const dateInput=document.querySelector(“.date”)
常量时间输入=document.querySelector(“.time”)
const displayBox=document.querySelector(“.js显示差异”)
dateInput.addEventListener(“更改”,显示差异)
timeInput.addEventListener(“更改”,显示差异)
显示差异()
设置间隔(显示差异,1000)

自从
逝去
简单的近似差异
函数计算差异(然后字符串){
常数秒=1000
常数分钟=60*秒
常数小时=60*分钟
常数日=24*小时
施工月=30*天//大约
施工年份=365*天//大约
const now=新日期();
const-then=新日期(n字符串);
让差异=(现在-那时);
常量时间=[{year}、{month}、{day}、{hour}、{minute}、{second}].map((项,i,a)=>{
常量[[unitName,unit]]=对象项(项)
常数单位=差值/单位| 0
差值-=单位*单位
常量可能复数=单位===1?”:“s”
返回单位>0?单位+“”+单位名称+可能复数:“”
}).filter(x=>x)
const formattedTime=time.length>1?[…time.slice(0,-1),“and”,time.slice(-1)]。join(“”):time[1]
返回格式化时间
}
函数displayDifference(){
displayBox.textContent=calculateDifference(dateInput.value+“,”+timeInput.value)
}
const dateInput=document.querySelector(“.date”)
常量时间输入=document.querySelector(“.time”)
const displayBox=document.querySelector(“.js显示差异”)
dateInput.addEventListener(“更改”,显示差异)
timeInput.addEventListener(“更改”,显示差异)
显示差异()
设置间隔(显示差异,1000)

自从
逝去

我不是IT专家,所以可能有更好的方法,但我所做的似乎有效。这里可以看到一个例子:

我的方法不是计算从第一个日期算起的天数差,而是从“开始日期”中的日期位置计算出“结束日期”中的日期位置。i、 在我60岁生日那天,我出生已经15个闰年了,但这些日子不算在内。我60岁了,不是60岁零15天

为了证明我不是IT专家,我无法发布代码,但您可以查看示例中的源代码。
顺便说一句,我只使用chrome/edge,所以它没有在其他平台上测试过。

我不是it专家,所以可能有更好的方法,但我所做的似乎很有效。这里可以看到一个例子:

我的方法不是计算从第一个日期算起的天数差,而是从“开始日期”中的日期位置计算出“结束日期”中的日期位置。i、 在我60岁生日那天,我出生已经15个闰年了,但这些日子不算在内。我60岁了,不是60岁零15天

为了证明我不是IT专家,我无法发布代码,但您可以查看示例中的源代码。
顺便说一句,我只使用chrome/edge,所以没有在其他平台上进行测试。

使用
momentjs
库进行尝试。它将有助于处理javascript中的日期:什么不起作用?是否应该使用getTime来计算差异?设置间隔可能比设置超时更适合您的需要您必须准确吗?因为有些日子有23小时,有些日子有25小时。。。至少在有夏令时。尝试使用
momentjs
library。它将有助于处理javascript中的日期:什么不起作用?是否应该使用getTime来计算差异?设置间隔可能比设置超时更适合您的需要您必须准确吗?因为有些日子有23小时,有些日子有25小时。。。至少在有夏时制的时候。再次感谢你,我只是想知道有没有一种简单的方法可以让这样的脚本进入wor