PHP Bug一年中的某一天



我正在尝试将一年中的某一天转换为日期。

所以没问题,我使用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.一月

相关内容

  • 没有找到相关文章

最新更新