1

サーバー時間に依存する必要がある JavaScript カウントダウンを構築していますが、クロスブラウザーの方法で PHP 時間を JavaScript に転送することはできません。これはすべての Mordern ブラウザーでうまく機能しますが、古いブラウザーではブレーキがかかります (日付が定義されていません)。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()してタイムスタンプを返すことをお勧めしますが、javascript に渡す前に * 1000 が必要です。

参照: W3schools - 日付オブジェクト リファレンス

于 2013-09-03T08:27:52.033 に答える