Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 日期()仅从日期格式YYYY-00-00起的年份_Php_Date - Fatal编程技术网

Php 日期()仅从日期格式YYYY-00-00起的年份

Php 日期()仅从日期格式YYYY-00-00起的年份,php,date,Php,Date,我试着这样做echo date(“Y”),strottime(“1999-00-00”)但是它返回1998而不是1999。有没有办法处理这个问题?我更喜欢“干净的方式”,而不是像$finalYear=(float)$year+1这样的方式。 日期格式必须为YYYY-00-00(带零)这可能是因为00不是有效的月份。最早的月份是01。今天也一样 echo date('Y', strtotime('1999-01-01')); 可能在您检索要解析的日期时应该进行更改?这可能是因为00不是有效月份。

我试着这样做
echo date(“Y”),strottime(“1999-00-00”)
但是它返回
1998
而不是
1999
。有没有办法处理这个问题?我更喜欢“干净的方式”,而不是像
$finalYear=(float)$year+1
这样的方式。
日期格式必须为
YYYY-00-00
(带零)

这可能是因为
00
不是有效的月份。最早的月份是
01
。今天也一样

echo date('Y', strtotime('1999-01-01'));

可能在您检索要解析的日期时应该进行更改?

这可能是因为
00
不是有效月份。最早的月份是
01
。今天也一样

echo date('Y', strtotime('1999-01-01'));

也许在检索要解析的日期的任何地方都应该进行更改?

如果您完全确定日期的格式永远不会更改,那么最好使用

echo substr('1999-00-00', 0, 4);
而不是在整个日期/时间子系统中产生strotime()和往返的沉重开销

当您告诉PHP的日期函数month/day为0时,它会将这些值转换为适当的“previous”值

e、 g

等等。这就像说“昨天”或“上个月”。类似地,指定第13个月也可以

1999-13-01 is actually 2000-01-01

如果你绝对确定日期的格式永远不会改变,你最好选择

echo substr('1999-00-00', 0, 4);
而不是在整个日期/时间子系统中产生strotime()和往返的沉重开销

当您告诉PHP的日期函数month/day为0时,它会将这些值转换为适当的“previous”值

e、 g

等等。这就像说“昨天”或“上个月”。类似地,指定第13个月也可以

1999-13-01 is actually 2000-01-01

获得1999年的唯一途径是

echo date( "Y", strtotime( "1999" ) );

获得1999年的唯一途径是

echo date( "Y", strtotime( "1999" ) );

由于一年中的第一个法定日是YYYY-01-01,我认为您引用的“不干净”方式在这里是完全合理的


或者,如果strotime()的参数是您从用户输入中得到的,那么使用substr()提取前四位数字可能更好。

由于一年中的第一个法定日期是YYYY-01-01,我认为您引用的“不干净”方式在这里是完全合理的


或者,如果strotime()的参数是您从用户输入中获得的参数,那么使用substr()提取前四位数字可能更好。

这与刚才的
echo'1999'相同YYYY-00-00
。当然这不是一种干净的方式,但这是我的第二次尝试:
echo date\u create(“1999-00-00”)->add(new DateInterval(“P1M2D”)->format(“Y”)这与echo'1999'相同YYYY-00-00
。当然这不是一种干净的方式,但这是我的第二次尝试:
echo date\u create(“1999-00-00”)->add(new DateInterval(“P1M2D”)->format(“Y”)