1

私はイギリス人ですが、アメリカ人のクライアントのために働いています。彼は表示する時間とオフセットを求めています。

なぜこれが機能するのですか:

$date = date('d-m-Y H:i');
$timeToAdd = strtotime(date("d-m-Y H:i", strtotime($date)) . " + 8 hour");
$newDate = date('d-m-Y H:i', $timeToAdd);
echo 'Current Time: ' . $date . '<br/>Time + 8 Hours: ' . $newDate;

生成するもの:

現在の時間: 17-06-2012 08:53 時間 + 8 時間: 17-06-2012 16:53

そして、これはありません(月と日が入れ替わります):

$date = date('m-d-Y H:i');
$timeToAdd = strtotime(date("m-d-Y H:i", strtotime($date)) . " + 8 hour");
$newDate = date('m-d-Y H:i', $timeToAdd);
echo 'Current Time: ' . $date . '<br/>Time + 8 Hours: ' . $newDate;

これは以下を生成します:

現在の時間: 06-17-2012 08:56 時間 + 8 時間: 12-31-1969 16:00

1969年

?!

4

1 に答える 1

5

以下については、ドキュメントstrtotime()の「注意」セクションを参照してください。

ノート:

m/d/yまたは形式の日付はd-m-y、さまざまなコンポーネント間のセパレーターを調べることで明確になります。セパレーターがスラッシュ(/)の場合、アメリカ人m/d/yが想定されます。一方、区切り文字がダッシュ(-)またはドット(.)の場合は、ヨーロッパd-m-y形式が想定されます。

潜在的なあいまいさを回避するために、ISO 8601(YYYY-MM-DD)の日付を使用するかDateTime::createFromFormat()、可能な場合はそれを使用することをお勧めします。

を区切り文字として使用している-ので、を想定していd-m-yます。

于 2012-06-17T16:04:31.093 に答える