PHP中,日期偏移1天.从DOY (Y-z)格式到字符串/unix



我需要采取'Y-z'格式的日期,即年-日(例如,2013-146),并将其转换为unix时间戳存储到数据库中。

我的问题是,我输入2013-146,并把它变成一个DateTime对象。然后,当我以unix或'Y-m-d'格式输出此日期时,我会得到2013-5-27,而不是2013-5-26,这是正确的日期。

你可以在NASA网站和NOAA网站上验证日期。

概要:——我有日期:2013-146—使用DateTime::createFromFormat并使用'Y-m-d'和'Y-z'回显,分别得到:2013-5-27和2013-146。——这与我列出的NASA网站不符,并且被一天所抵消,有人能证明我没有失去理智吗?

下面是可以测试的代码:
<?php
date_default_timezone_set('America/Chicago');
$year = 2013;  //where this outputs a simple year 'CCYY'
$day = 146;        //where this provides the day of year
$format = 'Y-z';    //specifying what format i'm creating the datetime with
$date = $year.'-'.$day;         //formatting the strings to the above $format
$timezone = new DateTimeZone('America/Chicago');     //specify the timezone
$fileDateStore = DateTime::createFromFormat($format, $date, $timezone);//, $timezone);  //create the DateTime object
$fileDateString = date_format($fileDateStore,"Y-m-d");  //format it so strtotime() can read it
$fileDate = strtotime($fileDateString);  //finally create the Unix Timestamp for the date.
$newfileDOY = date_format($fileDateStore,"Y-z");
echo 'newfileDOY = '.$newfileDOY.', ';
echo 'date = '.$date.', ';
echo 'fileDateString = '.$fileDateString.', ';
echo 'fileDate = '.$fileDate.PHP_EOL;
?>

问题是PHP中的z格式以0开头,而不是以1开头。

看:http://www.php.net/manual/en/function.date.php

z:一年中的日期(从0开始)

相关内容

  • 没有找到相关文章

最新更新