我正在尝试将一年中的某一天转换为日期。
所以没问题,我使用DateTime::createFromFormat与z和Y。
DateTime::createFromFormat('z Y', '199 2020');
/*RESULT*/
object(DateTime)[3]
public 'date' => string '2020-07-19 12:45:24.000000' (length=26)
public 'timezone_type' => int 3
public 'timezone' => string 'Europe/Paris' (length=12)
但当我测试结果时,我得到了错误的一年中的一天。。。
date('z Y', strtotime('2020-07-19'));
/*RESULT*/
'198 2020' (length=8)
所以我尝试这个
DateTime::createFromFormat('z Y', date('z Y', strtotime('2020-07-19')));
/*RESULT*/
object(DateTime)[3]
public 'date' => string '2020-07-20 12:52:10.000000' (length=26)
public 'timezone_type' => int 3
public 'timezone' => string 'Europe/Paris' (length=12)
如果我在本网站上查看2020年第199年的日期:https://www.calendrier.best/numero-de-jour-2020.html
我得到2020-07-17
我做错了什么??
如果你知道年份,你可以使用这样的东西。输出:
string(10) "2020-07-17"
代码:
<?php
$dayOfYearNumber = 199;
$year = 2020;
// Add day of year number to the first day of the year, substracting 1 because Jan 1st will be the first day.
$date = (new DateTime("$year-1-1"))->add(new DateInterval('P' . $dayOfYearNumber - 1 . 'D'));
var_dump($date->format('Y-m-d')); // string(10) "2020-07-17"
PHP只检测一些标准,如您在这里看到的https://www.php.net/manual/de/datetime.formats.date.php
在您的第一个示例中,您定义了格式,但strtotime()
没有这样的参数
如果将这些值作为变量,则可以使用mktime()
https://www.php.net/manual/de/function.mktime
但我建议PHP总是给一个月e.x.一月