javascript倒计时与年,月,日

时间:2012-06-20 03:40:44

标签: javascript countdown

我正在尝试使用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 剩余天数。

2 个答案:

答案 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

虽然它不是一个简单的,但它可以尽可能地工作和计算单位。