1
var austDay = new Date("May 18, 2012 00:00:00");
            $('#countdown').countdown({until: austDay});

是我得到的。我希望使这个静态化,我的意思是它在所有时区显示相同的倒计时。因此,无论您是否更改了您的时区或您的电脑上的日期,它都不应该影响倒计时并且它应该仍然是例如剩下 8 小时。

也许这是不可能的,因为 Javascript 是客户端?

我能做些什么?我真的希望它能够倒计时,而不是你需要刷新。也许我可以使用 PHP 的一些帮助?

倒计时应该是相同的,例如还剩 4 小时,它也应该在纽约和亚洲显示。

4

2 回答 2

2

您可以像这样使用 PHP 将服务器时间传递给客户端。

var time = new Date(<?php echo time()*1000; ?>);
于 2012-05-10T20:41:22.223 回答
0
var austDay = new Date("May 18, 2012 00:00:00");

这将在用户的本地 timezone中创建一个显示日期和时间的日期对象。要创建 UTC 日期,您可以改为执行以下操作:

var austDay = new Date(Date.UTC(2012, 4, 18));

...其中 4 是从零开始的月份数(显然,2012 和 18 是年和日)。

如果您需要在之后显示日期,请使用“UTC”函数而不是它们的非 UTC 对应函数,例如:

console.log(austDay.toUTCString()) // "Fri, 18 May 2012 00:00:00 GMT"

另一个问题是用户可以更改他们的时钟。为了给他们“还剩 8 小时”之类的信息并且绝对确定,您必须将服务器时间与客户端时间进行比较,并根据该时间设置日期。

例如,如果服务器知道事情发生在明天中午,并且是晚上 9:00,那么倒计时在 15 小时后结束。您可以告诉客户在倒计时准备好之前还剩多少时间,而不是给他们一个绝对时间。

var austDay = new Date();
var hoursLeft = <?php echo $something ?>;

austDay.addHours(hoursLeft);

您可能希望在几秒钟或更短的时间内完成,而不是几小时,为了简单起见,我在这里使用了几小时。

于 2012-05-10T20:51:10.403 回答