Php strtotime "rounding" end of month -
any idea why strtotime round end of month next month?
for($i=1;$i<12;$i++) { $d = "y-$i-t 00:00:00"; echo "date string: " . $d = date($d) . "\n"; echo "date unixtime: " . strtotime($d) . "\n"; echo "unixtime string: " . $d = date('y-m-d 00:00:00', strtotime($d)) . "\n"; echo "string unixtime: " . strtotime($d) . "\n\n"; }
results:
date string: 2011-1-31 00:00:00
date unixtime: 1296450000
unixtime string: 2011-01-31 00:00:00
string unixtime: 1296450000
date string: 2011-2-31 00:00:00
date unixtime: 1299128400
unixtime string: 2011-03-03 00:00:00
string unixtime: 1299128400
date string: 2011-3-31 00:00:00
date unixtime: 1301544000
unixtime string: 2011-03-31 00:00:00
string unixtime: 1301544000
date string: 2011-4-31 00:00:00
date unixtime: 1304222400
unixtime string: 2011-05-01 00:00:00
string unixtime: 1304222400
date string: 2011-5-31 00:00:00
date unixtime: 1306814400
unixtime string: 2011-05-31 00:00:00
string unixtime: 1306814400
date string: 2011-6-31 00:00:00
date unixtime: 1309492800
unixtime string: 2011-07-01 00:00:00
string unixtime: 1309492800
date string: 2011-7-31 00:00:00
date unixtime: 1312084800
unixtime string: 2011-07-31 00:00:00
string unixtime: 1312084800
date string: 2011-8-31 00:00:00
date unixtime: 1314763200
unixtime string: 2011-08-31 00:00:00
string unixtime: 1314763200
date string: 2011-9-31 00:00:00
date unixtime: 1317441600
unixtime string: 2011-10-01 00:00:00
string unixtime: 1317441600
date string: 2011-10-31 00:00:00
date unixtime: 1320033600
unixtime string: 2011-10-31 00:00:00
string unixtime: 1320033600
date string: 2011-11-31 00:00:00
date unixtime: 1322715600
unixtime string: 2011-12-01 00:00:00
string unixtime: 1322715600
t
returns number of days in month of date passed (or, in case, since you're not passing date, current month). because running code in january, result 31.
february doesn't have 31 days php add 3 days moving march 3rd.
Comments
Post a Comment