2013-04-03 46 views
0

我正在從excel文件讀取日期字段。如果日期是適當的日期,我可以成功地閱讀它。但在某些情況下,我有日期像如果以特定格式給出日期,則更改日期格式的特殊條件

12年7月12日

由於它是不是一個合適的日期格式,應該是2012年7月12日。

而我的腳本將其作爲12-12-2007閱讀。但我想要的輸出爲07-12-2012。

那麼,有沒有辦法讓我可以檢查是否格式來作爲DD.MM.YY(特殊情況),那麼我可以簡單地使用

爆炸(爆炸值」。‘’ 07.12.12')

根據我的需要更改日期。

謝謝

+0

這沒有Cake問題,但是PHP的主要問題。閱讀關於Date,strtotime和strftime的手冊。 – kicaj

+1

因此,用兩位數字而不是四位數表示的年份是唯一的問題?如果這就是全部(並且單個數字始終由0指向),那麼您可以簡單地檢查日期字符串的長度...... – CBroe

回答

1

使用DateTime對象。

$date = DateTime::createFromFormat('d.m.y', '07.12.12'); 
echo $date->format('d.m.Y'); 

CodeViper Demo.

注:我個人建議你保留它由- &不是.分隔日期格式標準(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 
} 
+0

他們如何判斷它是m.d.y而不是d.m.y? –

+0

@JohnConde - 在OP示例中,「07」似乎是日期。如果是月份,則可以相應地在'createFromFormat'中更改格式。 – Rikesh

+0

在他們的具體例子中,當然。但我相信他們有更多的日期,而不僅僅是需要工作的日期。 –

0

只是檢查長度:

$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];