我正在尝试使用javascript进行倒计时。但是,我的倒计时只能计算天,小时,分钟和秒。我也希望展示数年和数月。
以下是我的代码:
<script type="text/javascript">
today = new Date();
BigDay = new Date("December 25, 2016");
msPerDay = 24 * 60 * 60 * 1000;
timeLeft = (BigDay.getTime() - today.getTime());
e_daysLeft = timeLeft / msPerDay;
daysLeft = Math.floor(e_daysLeft);
e_hrsLeft = (e_daysLeft - daysLeft) * 24;
hrsLeft = Math.floor(e_hrsLeft);
minsLeft = Math.floor((e_hrsLeft - hrsLeft) * 60);
// $("#countdown").append("There are only<BR> <H4>" + daysLeft + " days " + hrsLeft + " hours and " + minsLeft + " minutes left </H4> Until December 25th 2020<P>");
document.write(daysLeft + " days " + hrsLeft + " hours" + minsLeft + " minutes");
</script>
我想输出:
x 年, y 几个月, z 剩余天数。
答案 0 :(得分:4)
你走在正确的轨道上。 只需按照相同的方法将天数除以365,如果它超过365并且做daysLeft模365.
(虽然它不准确,但它很简单,你可以使用它如果你不需要单位准确。)
即
var today = new Date();
var BigDay = new Date("December 25, 2018");
var msPerDay = 24 * 60 * 60 * 1000;
var timeLeft = (BigDay.getTime() - today.getTime());
var e_daysLeft = timeLeft / msPerDay;
var daysLeft = Math.floor(e_daysLeft);
var yearsLeft = 0;
if (daysLeft > 365) {
yearsLeft = Math.floor(daysLeft / 365);
daysLeft = daysLeft % 365;
}
var e_hrsLeft = (e_daysLeft - daysLeft) * 24;
var hrsLeft = Math.floor(e_hrsLeft);
var minsLeft = Math.floor((e_hrsLeft - hrsLeft) * 60);
document.write(yearsLeft + " years " + daysLeft + " days " + hrsLeft + " hours " + minsLeft + " minutes");
答案 1 :(得分:0)
月数实际上包含不同的天数。有些是30天,有些是31天。2月甚至更糟,包含28天,每4年增加一天(闰年)。 显示“年”的数量将不那么繁重,但仍有闰年需要应对。
所以没有任何简单的方法来准确计算它们。
对于演示计算年,月和周的代码,
检查此页面:
http://blog.refoua.me/post/day-counter/?lang=en
虽然它不是一个简单的,但它可以尽可能地工作和计算单位。