2

我正在尝试使用 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还剩多少天。

4

2 回答 2

4

你在正确的轨道上。如果天数超过 365,只需按照相同的方法将天数除以 365,然后对 daysLeft 取模 365。

(虽然它不会精确,但它是一个简单的,如果你不需要精确的单位,你可以使用它。)

IE

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

于 2012-06-20T03:53:38.037 回答
1

月份实际上包含不同的天数。有些是 30 天,有些是 31 天。二月更糟,包含 28 天,每 4 年(闰年)增加一天。显示“年”的数量将不那么繁琐,但仍有闰年需要处理。

所以没有任何简单的方法可以准确地计算它们。

有关演示计算年、月和周的代码,请查看此页面:
http ://blog.refoua.me/post/day-counter/?lang=en

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

于 2012-08-01T14:42:45.290 回答