0

PHP と JavaScript を使用して、(サーバーの日付ではなく) 現在のローカルの日付をエコーし​​たいと思います。

私のコードは次のとおりです。

<?php

$year = '<script type="text/javascript">
    var date = new Date();
    var year = date.getFullYear();
    document.write(year);
    </script>';

$month = '<script type="text/javascript">
    var date = new Date();
    var month = date.getMonth();
    var monthName = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "november", "December");
    var curMonth = monthName[month];
    document.write(curMonth);
    </script>';

$day='<script type="text/javascript">
    var date = new Date();
    var day = date.getDate();
    document.write(day);
    </script>';

$curDateString = $day . " " . $month . " " . $year;
$curDate = date('m/d/y', strtotime($curDateString));
echo $curDate;

?>

常に を返します01/01/70

私は何を間違っていますか?

4

2 に答える 2

0

JavaScript コードは、サーバー側ではなく、クライアント側で実行されます。これは、JavaScript コードがサーバー側で評価されないことを意味するため、文字列$curDateStringは期待どおりの値を持ちません。

通常のecho $curDateStringorvar_dump($curDateString)が出力されます。3 november 2013これは、デフォルトContent-Typeがであるためですtext/html。変数内のコード$curDateStringはクライアント側で実行され、出力は3 november 2013.

実際に何が含まれているかを理解する$curDateStringには、次のことを実行できます。

header('Content-Type: text/plain');
var_dump($curDateString);

これにより、以下のようなものが出力されます。

string(587) "<script type="text/javascript">
    var date = new Date();
    ...
    </script>

PHP にとって、これはランダムな意味不明です。次にstrtotime()、上記の文字列で使用しますが、失敗し01/01/70、出力として返されます。

目的を達成するために、クライアント側から日付値を渡すAJAX 呼び出しを行うことができます。次に、この入力を PHP スクリプトで受け取り、サーバー側で処理して、それに応じて送り返すことができます。

于 2013-11-03T10:09:22.960 に答える