2009-09-21 40 views

回答

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

這應該做到這一點。

這將使用strtotime將1985-12-15轉換爲unix時間戳。日期函數然後獲取格式化日期的第二個參數時間戳。

4

通過strtotime轉換的日期時間,然後在正確的日期格式使用date輸出,就像這樣:

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

Bugger,被毆打6秒 – 2009-09-21 17:34:38

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

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

那會是最便宜的嗎?

3

也許我只是愚蠢的,但如果你只想要該日期的開始,存儲爲一個字符串,你不能只使用substr提取該字符串的開始7個字符?

有點像這樣,例如:

$input = '1985-12-15'; 

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

哪個不給你:

string '1985-12' (length=7) 

無需相關功能的任何日期的操作,在這種情況下 - 而這將可能甚至更快/更便宜,解析字符串到日期和所有。

(是的,我知道,過早的優化^^)

+0

woot如果1985-1-1:D – n00b 2009-09-21 17:38:01

+0

@ noob52:注意到 - 在這種情況下,問題是「將該日期存儲爲1985-01-01 ,還是如1985-1-1?「 ;我會使用第一個解決方案,並且我承認我沒有考慮第二個解決方案^^ – 2009-09-21 17:40:04

0

如果你覺得正則表達式是不是「便宜」,那麼時間函數幾乎肯定會更貴:你需要轉換將字符串轉換爲時間值,然後將其格式化回字符串中...

0

您是否已將該時間值已存在於數組中?或者您是否具有這種類似於日期函數的輸出?

0

如果您不確定日期是如何形成的,您應該使用strtotime函數,否則如果格式爲yyyy-mmm-dd或yy-m-d,可能很容易。

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