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'相同所以这两个函数的使用似乎没用,不是吗?我认为关键是OP的日期已经格式化为YYYY-00-00
。当然这不是一种干净的方式,但这是我的第二次尝试:echo date\u create(“1999-00-00”)->add(new DateInterval(“P1M2D”)->format(“Y”)代码>这与echo'1999'相同所以这两个函数的使用似乎没用,不是吗?我认为关键是OP的日期已经格式化为YYYY-00-00
。当然这不是一种干净的方式,但这是我的第二次尝试:echo date\u create(“1999-00-00”)->add(new DateInterval(“P1M2D”)->format(“Y”)代码>