0

データベースから必要な情報を取得する php コードがあります。PHP の日付コードは、"format("Ymd H:i:s")" でフォーマットされます。これらの日付をデータベースから取得し、JavaScript を使用してカレンダーに追加しようとしています。カレンダーに追加したいイベントをそこにループします。解決策を見つけたさまざまな方法が必要ですが、どちらも機能しません。

<script type='text/javascript'>
    <?php for($x = 0; $x < count($events); $x++) { ?>
          var dateToConvert = new Date('<?php echo date(DATE_ISO8601, strtotime($events[$x]["startDate"])); ?>');
          var startDate = dateToConvert.toISOString();
          var endDate = '<?php echo date(DATE_ISO8601, strtotime($events[$x]["endDate"])); ?>';
          var events = [
             {
               title: '<?php echo $events[$x]["name"]; ?>',
               start: new Date(startDate),
               end: endDate
             }
          ];
    <?php } ?>
</script>

何かマイナーなものが欠けていると思いますが、それを理解できません。私はChromeデバッガーを使用しましたが、これが入力として持っているものです。(2013-03-18T01:00:00-0600) 最後に Z がないようです。

データベースの値は (2013-03-18 01:00:00) です。

私は何が欠けていますか?

4

2 に答える 2

0

ISO時刻は正しくフォーマットされています。日時の末尾の「Z」は、UCTタイムゾーンである「ズールー時間」を示します。

したがって、別のタイムゾーンを指定していない場合にのみ「Z」を指定します。

あなたの場合、あなたが引用した日付にはタイムゾーン(-6000)が含まれているので、「Z」が表示されることはないと思います。

詳細については、ウィキペディアのページを参照してください:http: //en.wikipedia.org/wiki/ISO_8601#Time_zone_designators

PHPとJavascriptの間で日付/時刻の値を移動する場合、最も簡単な方法はUNIXタイムスタンプを使用することです。これは単純な整数値であるため、フォーマットについて考える必要はなく、どちらの言語も完全に理解します。唯一の注意点は、Javascriptではマイクロ秒対PHPの秒数であるため、1000で乗算または除算する必要があるということです。しかし、それは十分に単純です。

于 2013-03-14T22:07:33.000 に答える
0

日付を文字列形式で渡さないでください。代わりに、数値として渡します。

var dateToConvert = new Date();
dateToConvert.setTime(<?php echo strtotime($events[$x]['startDate']); ?>000);

これにより、より確実に機能します。JS は時間をミリ秒単位で処理するのに対し、PHP は秒単位で処理するため、ゼロが 3 つあることに注意してください。

于 2013-03-14T20:34:18.377 に答える