不使用正则表达式在PHP中处理日期

不使用正则表达式在PHP中处理日期,php,time,Php,Time,有没有办法更改日期 1985-12-15 到 不使用正则表达式? <?php echo date('Y-m', strtotime('1985-12-15')); ?> 应该这样做 这将使用strotime将1985-12-15转换为unix时间戳。然后,date函数将使用第二个参数时间戳来格式化日期。 应该这样做 这将使用strotime将1985-12-15转换为unix时间戳。然后,date函数采用第二个参数时间戳来格式化日期。通过将日期转换为时间,然后使用以正确的日期

有没有办法更改日期

1985-12-15

不使用正则表达式?


<?php echo date('Y-m', strtotime('1985-12-15')); ?>
应该这样做

这将使用strotime将1985-12-15转换为unix时间戳。然后,date函数将使用第二个参数时间戳来格式化日期。


应该这样做


这将使用strotime将1985-12-15转换为unix时间戳。然后,date函数采用第二个参数时间戳来格式化日期。

通过将日期转换为时间,然后使用以正确的日期格式输出,如下所示:

<?php    
echo date('Y-m', strtotime('1985-12-15'));

通过将日期转换为时间,然后使用以正确的日期格式输出,如下所示:

<?php    
echo date('Y-m', strtotime('1985-12-15'));
最好不要
substr($date,0,strrpos($date,'-')

这将是最便宜的?

最好不要
substr($date,0,strrpos($date,'-'))


那会是最便宜的吗?

也许我很愚蠢,但是如果你只想把日期的开头存储为一个字符串,你就不能用它来提取该字符串开头的7个字符吗

有点像这样,例如:

$input = '1985-12-15';

$output = substr($input, 0, 7);
var_dump($output);
这给了你:

string '1985-12' (length=7)
在本例中,不需要任何与日期操作相关的函数,而且这可能比将字符串解析为日期等更快/更便宜


(是的,我知道,过早优化^^)

也许我很愚蠢,但如果你只想把日期的开头存储为一个字符串,你就不能用它来提取该字符串开头的7个字符吗

有点像这样,例如:

$input = '1985-12-15';

$output = substr($input, 0, 7);
var_dump($output);
这给了你:

string '1985-12' (length=7)
在本例中,不需要任何与日期操作相关的函数,而且这可能比将字符串解析为日期等更快/更便宜


(是的,我知道,过早优化^^)

如果你认为正则表达式不“便宜”,那么时间函数几乎肯定会更贵:你需要将字符串转换为时间值,然后将其重新格式化为字符串…

如果你认为正则表达式不“便宜”,那么时间函数几乎肯定会更加昂贵:您需要将字符串转换为时间值,然后将其重新格式化为字符串…

数组中是否已经存在该时间值,或者日期函数中是否存在类似的输出?

数组中是否已经存在该时间值,或者日期函数中是否存在类似的输出?

如果不确定日期的格式,您应该使用strotime函数,否则,如果格式是yyyy-mmm-dd或yy-m-d,那么它可能同样容易实现

$datearray = explode('-',$date);
echo $datearray[0].'-'.$datearray[1];

如果不确定日期的格式,则应使用strotime函数,否则,如果格式为yyyy-mmm-dd或yy-m-d,则很容易实现

$datearray = explode('-',$date);
echo $datearray[0].'-'.$datearray[1];

Bugger,被6秒打败Bugger,被6秒打败seconds@noob52:注意——在本例中,问题是“该日期将存储为1985-01-01还是1985-1-1?”;我会使用第一种解决方案,我承认我没有考虑第二种解决方案。^^@noob52:注意到了——在这种情况下,问题是“该日期将存储为1985-01-01,还是1985-1-1?”;我会使用第一种解决方案,并且我承认我没有考虑第二种^^^道具来避免不必要的regexp.:-)尝试避免不必要的regexp的道具。:-)