0

strtotime が月末を翌月に丸めることがある理由は何ですか?

for($i=1;$i<12;$i++)
{
    $d = "Y-$i-t 00:00:00";
    echo "Date as String: " . $d = date($d) . "\n";
    echo "Date as UnixTime: " . strtotime($d) . "\n";
    echo "UnixTime back to String: " . $d = date('Y-m-d 00:00:00', strtotime($d)) . "\n";
    echo "String back to UnixTime: " . strtotime($d) . "\n\n";
}

結果:
Date as String: 2011-1-31 00:00:00
Date as UnixTime: 1296450000
UnixTime back to String: 2011-01-31 00:00:00
String back to UnixTime: 1296450000

Date as String: 2011-2- 31 00:00:00
UnixTime としての日付: 1299128400 UnixTime を文字列に戻す
: 2011-03-03 00:00:00 UnixTime に戻す文字列: 1299128400 文字列としての日付: 2011-3-31 00:00:00 UnixTime としての日付: 1301544000 UnixTime を String に戻す: 2011-03-31 00:00:00 String を UnixTime に戻す: 1301544000 Date as String: 2011-4-31 00:00:00 Date as UnixTime: 1304222400 UnixTime を String に戻す: 2011-05- 01 00:00:00 UnixTime に戻る 文字列: 1304222400 文字列としての日付: 2011-5-31 00:00:00













UnixTime としての日付: 1306814400 UnixTime を文字列に戻す
: 2011-05-31 00:00:00 UnixTime に戻す 文字列: 1306814400 文字列としての日付: 2011-6-31 00:00:00 UnixTime としての日付: 1309492800 UnixTime を文字列に戻す: 2011-07-01 00:00:00 文字列を UnixTime に戻す: 1309492800 Date as String: 2011-7-31 00:00:00 Date as UnixTime: 1312084800 UnixTime を String に戻す: 2011-07-31 00:00:00 UnixTime に戻す 文字列: 1312084800 文字列としての日付: 2011-8-31 00:00:00 UnixTime としての日付: 1314763200 UnixTime を文字列に戻す : 2011-08-31 00:00:00 UnixTime に戻す文字列: 2011-9-31 00:00:00 UnixTime としての日付: 1317441600



















UnixTime を String に戻す: 2011-10-01 00:00:00
String を UnixTime に戻す: 1317441600

Date as String: 2011-10-31 00:00:00
Date as UnixTime: 1320033600
UnixTime を String に戻す: 2011-10-31 00:00:00
UnixTime に戻る文字列: 1320033600

文字列としての日付: 2011-11-31 00:00:00
UnixTime としての日付: 1322715600
UnixTime から文字列に戻る: 2011-12-01 00:00:00 UnixTime に戻る文字列
: 1322715600

4

3 に答える 3

3

t渡された日付の月の日数を返します(または、あなたの場合、日付を渡していないので、現在の月)。このコードを1月に実行しているため、結果は31になります。

2月には31日がないため、PHPはさらに3日を追加して、3月3日に移動します。

于 2011-01-25T22:16:07.150 に答える
0

すべての月が 31 日というわけではないからです。

于 2011-01-25T22:07:51.617 に答える
-1

30 日には 9 月、4 月、6 月、11 月があります。残りはすべて 31 ですが、2 月は 28、場合によっては 29 です。

于 2011-01-25T22:36:17.230 に答える