【问题标题】:javascript countdown with year , month , day带有年、月、日的javascript倒计时
【发布时间】:2012-06-20 03:40:44
【问题描述】:

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

【问题讨论】:

  • 我可以告诉你的一件事是,这将无法可靠地跨浏览器工作:new Date("December 25, 2016")。该字符串的格式不正确。如果您知道日期,则根本不想为此使用字符串;而是:new Date(2016, 11, 25)(几个月运行0-11)。另请注意,您正在成为 The Horror of Implicit Globals 的牺牲品。 (很抱歉没有回答,但我现在没有时间调试整个脚本。)
  • 非常感谢您的建议。我会遵守的。
  • 用 Date 对象方法检查这个答案:stackoverflow.com/a/30679505/7246488

标签: javascript countdown


【解决方案1】:

你在正确的轨道上。 如果天数超过 365 并用 daysLeft 模 365,只需按照相同的方法将天数除以 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");

【讨论】:

  • 您好杰拉德,非常感谢您的帮助。它运作良好。再次感谢您给我宝贵的时间。
  • 一年也有366天。
  • 是的,我知道,我很担心闰年。所以,现在我想只显示天分秒。感谢您的建议 SomeGuy。
  • @sandy 不要轻易放弃。只是解决问题。这是一个基于数学的问题。只需在闰年所在的年份添加额外的一天。我们可以为您提供代码,但我们无法为您考虑。
【解决方案2】:

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

因此没有任何简单的方法可以精确计算它们。

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

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

【讨论】:

    猜你喜欢
    • 2019-09-30
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多