2010-04-12 86 views

回答

58

嗯,也許是這樣的;

echo date("F 1, Y", strtotime("-6 months")); 

編輯;

如果你想指定一個自定義的日期使用;

echo date("F, 1 Y", strtotime("-6 months", strtotime("Feb 2, 2010"))); 
+2

除了格式字符串中錯誤位置的逗號以外,這看起來像是最好的解決方案(現在它將顯示「2009年10月1日」,而不是「2009年10月1日」)。 – Powerlord 2010-04-12 21:20:57

+0

+1爲聰明:) – 2010-04-12 21:23:49

+0

現在顯示»2009年10月1日« – knittl 2010-04-12 21:26:01

9

使用mktimedate組合:

$date_half_a_year_ago = mktime(0, 0, 0, date('n')-6, 1, date('y')) 

作出新的相對於給定的日期,而不是今天的日期,調用date與第二參數

$given_timestamp = getSomeDate(); 
$date_half_a_year_ago = mktime(0, 0, 0, date('n', $given_timestamp)-6, 1, date('y', $given_timestamp)) 

它格式化輸出,請再次使用date

echo date('F j, Y', $date_half_a_year_ago); 
+0

我沒有PHP在這裏測試這個,但確實mktime甚至接受負月?它被記錄爲無效參數返回false。 – Powerlord 2010-04-12 21:22:55

+0

@omg獨角獸,是的,從文檔:»mktime()對於日期的算術和驗證非常有用,因爲它會自動計算超出範圍輸入的正確值。« – knittl 2010-04-12 21:28:56

7

有點駭人,但作品:

<?php 

$date = new DateTime("-6 months"); 
$date->modify("-" . ($date->format('j')-1) . " days"); 
echo $date->format('j, F Y'); 

?> 
+1

噢,嘿,我沒有實現了DateTime的構造函數接受了-6個月。我現在感到很蠢。 – Powerlord 2010-04-12 21:18:26

相關問題