1

我正在构建一个 JavaScript 倒计时,它需要依赖服务器时间,但我无法以跨浏览器的方式将 php 时间传输到 javascript。这适用于所有现代浏览器,但在较旧的浏览器中刹车(日期未定义)。如果我选择它date("Y-m-d H:i:s)而不是date("Y-m-d\TH:i:s\Z)它会更好,但在 IE10 中不行

<?php

 switch ($day) {
    case 'Sat':
        $start = "10";
        $stop  = "16";
        break;

   case 'Sun':
        $start = "11";
        $stop  = "16";
       break;

    default:
        $start = "10";
        $stop  = "19";
        break;
}

 ?>
<script>
     jQuery(function(){

      var open = new Date("<?php echo date("Y-m-d\TH:i:s\Z",strtotime("today {$start}:00:00")); ?>");
      var end = new Date("<?php echo date("Y-m-d\TH:i:s\Z",strtotime("today {$stop}:00:00")); ?>");
      var _second = 1000;
      var _minute = _second * 60; 
      var _hour = _minute * 60;
      var _day = _hour * 24;
      var start  = new Date("<?php echo date("Y-m-d\TH:i:s\Z"); ?>") ;
});
</script> 
4

2 回答 2

3

ECMAScript/JavaScript 官方认可的唯一格式是ISO 8601 Extended

格式如下:YYYY-MM-DDTHH:mm:ss.sssZ

但是,这是 ECMAScript 5 的新功能。之前的版本将支持留给每个供应商来决定。

您可以尝试使用时间戳而不是字符串。

var open = new Date(<?php echo strtotime("today {$start}:00:00") * 1000; ?>);
// ...
var start = new Date(<?php echo time() * 1000; ?>);

JavaScript 和 PHP 都使用基于 UTC 的时间戳,只是秒 (PHP) 与毫秒 (JS) 的差异。

于 2013-09-03T08:22:33.607 回答
1

首先,Javascript date() 接受毫秒dateString

类似于 php的毫秒time()数。

dateString应该使用这种格式:October 13, 2012 11:13:00

根据您的情况,我建议使用strtotime()time()返回时间戳,但您需要 * 1000 才能传递给 javascript。

参考:W3schools - 日期对象参考

于 2013-09-03T08:27:52.033 回答