在不使用正则表达式的情况下在PHP中操作日期

时间:2009-09-21 17:31:54

标签: php time

有没有办法从

更改日期
1985-12-15

1985-12

不使用正则表达式?

8 个答案:

答案 0 :(得分:7)

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

应该这样做。

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

答案 1 :(得分:4)

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

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

答案 2 :(得分:3)

也许我只是愚蠢,但如果你只想要那个日期的开头,存储为字符串,你不能只用substr来提取该字符串开头的7个字符吗? / p>

有点像这样,例如:

$input = '1985-12-15';

$output = substr($input, 0, 7);
var_dump($output);

哪位能给你:

string '1985-12' (length=7)

在这种情况下,不需要任何与日期操作相关的函数 - 这可能会更快/更便宜地将字符串解析为日期和所有这些。

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

答案 3 :(得分:0)

$myDate = date('Y-m',strtotime('1985-12-15'));
echo $myDate // prints '1985-12'

答案 4 :(得分:0)

不适合substr($date,0,strrpos($date,'-'));

哪个会最便宜?

答案 5 :(得分:0)

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

答案 6 :(得分:0)

你是否已经在数组中拥有该时间值,或者您是否希望这样的输出来自日期函数?

答案 7 :(得分:0)

如果您不确定如何格式化日期,则应使用strtotime函数,否则如果格式为yyyy-mmm-dd或yy-m-d则可能很容易。

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