2014-01-23 163 views
0

我已經得到了下面的代碼,我正在使用它來提取一天$ day變量。但是,PHP似乎使用默認配置日期格式,並假定日期格式爲d-m-Y。這裏是我的代碼:格式化日期使用PHP strtotime

$dateformat = "m-d-Y"; 
$selected_date = "04-30-2013"; 

$day = date(d, strtotime($selected_date)); 

echo $day; 

有沒有辦法對我來說,動態讓基於$日期格式變量定義的格式PHP執行?

感謝

+4

'日期(d,'加薪可能是一個警告,你可能需要更換''由$ dateformat' – Asenar

+0

D'如果你只是想你需要'的一天。? $ day = date('d',strtotime($ selected_date));' – elitechief21

回答

2

這裏的問題是,strtotime()不能在自定義格式解析日期字符串。從documentation for strtotime()(重點煤礦):在第m

日期/ d/y或DMY格式通過查看在各個組件之間的分離器消除歧義:如果分離器是斜線(/),則美國假定m/d/y;而如果分隔符是破折號( - )或點(。),則假定歐洲的d-m-y格式。 爲避免潛在的歧義,最好在可能的情況下使用ISO 8601(YYYY-MM-DD)日期或DateTime::createFromFormat()

解決方法是使用DateTime::createFromFormat()。它可以解析自定義格式的日期:

$dateObj = DateTime::createFromFormat($dateformat, $selected_date); 
$day = $dateObj->format('d'); // => 30 
+0

太棒了,這正是我要找的 –

+0

@JohnSmith:很高興能有幫助! –