我正在從excel文件讀取日期字段。如果日期是適當的日期,我可以成功地閱讀它。但在某些情況下,我有日期像如果以特定格式給出日期,則更改日期格式的特殊條件
12年7月12日
由於它是不是一個合適的日期格式,應該是2012年7月12日。
而我的腳本將其作爲12-12-2007閱讀。但我想要的輸出爲07-12-2012。
那麼,有沒有辦法讓我可以檢查是否格式來作爲DD.MM.YY(特殊情況),那麼我可以簡單地使用
爆炸(爆炸值」。‘’ 07.12.12')
根據我的需要更改日期。
謝謝
我正在從excel文件讀取日期字段。如果日期是適當的日期,我可以成功地閱讀它。但在某些情況下,我有日期像如果以特定格式給出日期,則更改日期格式的特殊條件
12年7月12日
由於它是不是一個合適的日期格式,應該是2012年7月12日。
而我的腳本將其作爲12-12-2007閱讀。但我想要的輸出爲07-12-2012。
那麼,有沒有辦法讓我可以檢查是否格式來作爲DD.MM.YY(特殊情況),那麼我可以簡單地使用
爆炸(爆炸值」。‘’ 07.12.12')
根據我的需要更改日期。
謝謝
使用DateTime對象。
$date = DateTime::createFromFormat('d.m.y', '07.12.12');
echo $date->format('d.m.Y');
注:我個人建議你保留它由-
&不是.
分隔日期格式標準(d-m-Y
)該方法也將只支持對PHP版本> = 5.3。 0。
編輯:檢查正則表達式的條件,如果你的日期是在DMY
$pattern = '/^[0-9]{2}\.[0-9]{2}\.[0-9]{2}$/';
if(preg_match($pattern,$date,$matches)){
#conversion goes here
}
您也可以使用,
if(substr_count($date,'.') == 2){
#conversion goes here
}
他們如何判斷它是m.d.y而不是d.m.y? –
@JohnConde - 在OP示例中,「07」似乎是日期。如果是月份,則可以相應地在'createFromFormat'中更改格式。 – Rikesh
在他們的具體例子中,當然。但我相信他們有更多的日期,而不僅僅是需要工作的日期。 –
只是檢查長度:
$pieces = explode('.', '07.12.12');
if (strlen($pieces[2]) !== 4) {
$pieces[2] = '20' . $pieces[2];
}
// proper date in YYYY-MM-DD format
$date = $pieces[2] . '-' . $pieces[1] . '-' . $pieces[0];
這沒有Cake問題,但是PHP的主要問題。閱讀關於Date,strtotime和strftime的手冊。 – kicaj
因此,用兩位數字而不是四位數表示的年份是唯一的問題?如果這就是全部(並且單個數字始終由0指向),那麼您可以簡單地檢查日期字符串的長度...... – CBroe