0

今年のPHPの時間/日付に関して奇妙な問題があります。コードはまったく変更されておらず、私の日付はバグがあります。

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

$date = strtotime($order['date']);

$dateNew = date('Y-m-d h:i A', $date);

print $dateNew;

いくつかの理由のために戻ります1969-12-31 07:00 PMが、次のとおりです。

print $order['date'];

戻り値2013-01-12 18:25:43

私のコードが正しいと確信しているので、私は混乱しています。

私はあなたがこのバガーを解決することをあえてします!

4

3 に答える 3

1

関数strtotime()は、英語を日付形式に変換するために作成されました。

この関数は、英語の日付形式を含む文字列が与えられることを想定しており、現在指定されているタイムスタンプを基準にして、その形式をUnixタイムスタンプ(1970年1月1日00:00:00 UTCからの秒数)に解析しようとします。現在の時刻が指定されていない場合。

$ order変数に実際に何が含まれているのかわからないので、2つの解決策を提案します。

たぶん、strtotime関数を避けて、次のように直接date()に置き換えることができます。

$order = ['date' => '2013-01-12 18:25:43'];
$date = date($order['date']);

ここでうまく機能します:http://codepad.viper-7.com/cbNA87

または、機能していない場合は、 mktime()の使用を検討してください。これにより、日付がエポックからの秒数に変換されます。

Unixエポックは、すべてのタイムスタンプの基準点です。PHPは、この日付からの時間を秒単位で計算します。は$datenullであり、サーバーは米国の東海岸にあるため、エポックが返されます:)

于 2013-01-14T19:29:02.720 に答える
1

適切な日付がない場合、PHPは日付1969-12-31を返します。だからあなたがしたなら

$date = 0;
$dateNew = date('Y-m-d', strtotime($date));

これがデフォルトのUnixエポック時間であるため、結果は1969-12-31になります。http://php.net/manual/en/function.time.php

于 2013-01-14T19:30:06.970 に答える
1

「1969-12-3107:00PM」の予期しない日付は、date()で問題が発生したことを意味します。

strototime($ order ['date'])はおそらくfalseを返しています(UNIXタイムスタンプへの解析に失敗しています)。

これを試して、intが返されることを確認してください(falseではありません)

 var_dump($order['date'], strtotime($order['date'])); 

日付のエラー状態を参照してください: http: //php.net/date strtotimeの戻り値を参照してください:http://php.net/strtotime

于 2013-01-14T19:30:40.180 に答える