-->

JavaScript的倒计时,时区和夏令时间问题(Javascript countdown and

2019-09-20 08:09发布

我们的团队是有很大的问题与JQuery的倒计时,我们真的需要一些帮助。

最初,我们有一些ScriptSharp代码,这是否

JQueryCountdownOptions opts = new JQueryCountdownOptions();
opts.Layout = "<ul class=\"group\"> <li>{dn} <span>{dl}</span></li> <li>{hn} <span>{hl}</span></li> <li>{mn} <span>{ml}</span></li> <li>{sn} <span>{sl}</span></li> </ul>";
opts.Until = Number.ParseInt(timeLeft);

jQuery.Select("#countdownclock").Plugin<JQueryCountdown>().Countdown(opts);
jQuery.Select("#countdownclock").Show();
jQuery.Select("#bidBox").RemoveAttr("disabled");

我们注意到的是,这里使用了客户端的时钟从倒计时。 因此,如果客户决定改变他的时间至5小时,然后提前倒计时将在5小时的休息时间。

为了解决这个问题,我们推出了一些更多的代码

在视图:

   $(function () {

        var expires = new Date(@year, @month, @day, @hours, @minutes, @seconds);
        $('#clockDiv').countdown({ until: expires, timeZone: null, serverSync: serverTime, onTick: serverTime, tickInterval: 60 });

        function serverTime() {
            var time = null;
            $.ajax({ url: '/Auction/SyncServerTime',
                async: false, dataType: 'json',
                success: function (result) {
                    time = new Date(result.serverTime);
                }, error: function (http, message, exc) {
                    time = new Date();
                }
            });
            return time;
        }
});

在控制器

public JsonResult SyncServerTime()
        {
            var result = new JsonResult
            {
                Data = new
                {
                    serverTime = DateTime.Now.ToString("MMM dd, yyyy HH:mm:ss zz")
                },
                JsonRequestBehavior = JsonRequestBehavior.AllowGet
            };
            return result;
        }

这段代码确保无论什么用户设置自己的时钟,倒数计时器将定期同步到服务器的时间。 问题解决了。

唯一的问题是,我们已经想出了其他的问题。

问题是,当用户在不同的时区,然后这些用户的倒计时都不同,这取决于时区偏移,他们的时区了。 我们试图改变各种参数,仍然是有问题的。 更糟糕的是,如果我的时间跨度横跨夏令时施加然后事情出差错再次约会,无论是对于那些在同一时区和那些在不同的。 我们与不同的代码和参数试验,因此以上仅仅是我所做的,是从什么我尊敬的同事们尝试了不同的。 我所问的是肯定,有人在某处,必须有一个要求

  1. 写倒计时,是独立的客户端的时间和基于服务器的时间。
  2. 显示了相同的天数,小时,分钟,剩下的无论用户在什么时区秒
  3. 显示了相同的天数,小时,分钟,剩余的时代将在此期间因为DST的用户,其时间不会在此期间,由于DST的变化而变化,用户秒钟
  4. 显示的天数,小时,分钟和秒剩余的时代将在此期间因为DST的更改用户的实际数量。

我们不能谁曾经有过这个问题的唯一的人,肯定。 它不能这么难。 有谁知道一个解决方案吗?

谢谢,

萨钦

Answer 1:

我没有处理与个人相同的情况,但看到日期,时区问题等弹出自动触发有关因使用而不是UTC日期对象的本地日期的对象而产生一些潜在的问题的看法。

IMO,事情只是关闭,如果所有的计算,日期的序列化仅在UTC空间更好地工作,最后当它涉及到从用户提出一个日期,它是根据情况转换为当地或适当的时区。 在翻盖侧,用户输入本地或一段时间区相关的条目,并立即被转换为UTC为内部表示。 这避免了在整个应用程序的不同层/层种种困惑。

它不是一个真正的解决您的具体问题,但也许要考虑的事情,可能会导致一个。



文章来源: Javascript countdown and timezone and daylight saving time issues