跨浏览器php日期到javascript日期


Crossbrowser php date to javascript date?

我正在构建一个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> 

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)的差异。

首先,Javascript date()接受毫秒日期字符串

毫秒类似于php time()

日期字符串应使用以下格式:October 13, 2012 11:13:00

根据您的情况,我建议使用strtotime()time()来返回时间戳,但在传递到javascript之前需要*1000。

参考:W3schools-日期对象参考