2011-11-08 108 views
4

我想以日期時間格式(2011-11-08 06:00)將日期以法語格式(2011年11月08日06h00)轉換。以法語格式以mysql日期時間格式轉換日期

我能爲datetime轉換法語格式日期與小功能:

function dateFR($datetime) { 
    setlocale(LC_ALL, 'fr_FR'); 
    return strftime('%d %B %Y à %Hh%M', strtotime($datetime)); 
} 

但我不知道該怎麼做相反。

謝謝你的幫助。

+0

我可以想出十幾種非正式的方法 - 使用preg_match,explode,date,foreach等。對於你自己來說是一個好習慣,這聽起來像你有很少編程經驗。 – Benubird

+0

謝謝你的回答Benubird和例子。我在爲自己努力。 – Beno

回答

6

怎麼樣?

date("Y-m-d H:i:s", strtotime($datetime)); 

啊,是的,我看到了問題。 strtotime只有轉換英文文本(重點煤礦):

函數需要給予含英語日期格式的字符串並嘗試將其格式解析爲Unix時間戳

你最好的對於您的特定格式,賭注可能會是preg_match,因爲似乎沒有任何特定於語言環境的功能可以轉換月份名稱之類的內容。

+0

謝謝DTest,我已經試過,但它不起作用:( 結果總是:1970-01-01 01:00 – Beno

+0

@beno strototime($ datetime)的返回值是什麼? – DTest

+0

結果值是1970-01-01 01:00當我這樣做時: $ date_fr =「2011年11月06日」06h00「; $ datetime =日期(」Ymd H:我「,strtotime($ date_fr)); 回聲「datetime:」。$ datetime。「
」; – Beno

2

我剛剛寫了這個將日期/月/年的法語日期轉換爲英文格式和MYSQL旁邊。假設原始日期用「/」斜槓分隔

private function dateToMySQL($date){ 
     $tabDate = explode('/' , $date); 
     $date = $tabDate[2].'-'.$tabDate[1].'-'.$tabDate[0]; 
     $date = date('Y-m-d H:i:s', strtotime($date)); 
     return $date; 
    } 

這是非常基本的,並警告如果缺少數字像天。

+0

謝謝。分享Xjet。 – Beno

1

,如果你有數組或者多陣列我做了這個功能,中庸之道你輸入的日期開始與NAME =「日期_....」

function dateFormatSql(&$array){ 
foreach ($array as $key=>&$value){ 
    if(!is_array($value)){ 
     if(preg_match("#^date_#", $key)){ 
      $tabDate = explode('/' , $value); 
      $date = $tabDate[2].'/'.$tabDate[1].'/'.$tabDate[0]; 
      $sqldate = date('Y/m/d', strtotime($date)); 
      $array[$key] = $sqldate; 
     } 
    }else{ 
     dateFormatSql($value); 
    } 

} 

}