0

私のphpコードは、DateTime変数に次の値を送信しています:

2013-09-30T22:15:00+0000

Web サーバーを通過するため、コードが実際に取得するのは次のとおりです。

2013-09-30T22:15:00 0000

上記の値で DateTime 変数を初期化すると、次のようになります。

0000-09-30T22:15:00+0000

正しい/簡単なことは、datetime文字列のURLをエンコードすることです。しかし、末尾がオブジェクト0000の年に適用される理由を知っている人はいますか? DateTimeありがとう

更新:以下はサンプルコードです。$dateString変数は$_POST['timeStart']. クライアントは POST データを適切に URL エンコードしておらず、Web サーバーの URL は + をスペースにデコードします。

$dateString = "2013-09-30T22:15:00 0000";
$date = new DateTime($dateString);
echo $date->format(DateTime::ISO8601) . "\n";
4

1 に答える 1

0

2013-09-30T22:15:00+0000URL エスケープせずに GET/POST リクエストを介してフィールドを渡す場合、+シンボルはスペースにデコードされる可能性があります。したがって、問題: スペースを修正して a に置き換える+と、日付が正しく解析されます。

于 2013-09-30T14:49:39.943 に答える