2012-02-22 57 views
1

所以我在wordpress中有這樣的日期,我從定製的metabox中獲取它的存儲位置,23/02/2012,現在我怎樣才能在WP或類似的東西中設置wp_locale,而我需要將日期轉換爲:Monday 23 February 2012,但我也需要設置語言,這就是爲什麼我需要wp_locale因爲輸出將在Dutch.Thank你在wordpress中將日期編號轉換爲字符串

回答

2

的日期格式,可以用下面的代碼的轉換指南。

date('l j F Y', strtotime(str_replace('/', '-', '23/02/2012'))) 

str_replace是必要的,因爲與/ PHP假定m/d/y美國日期格式,而不是歐洲d/m/y

至於在WordPress的與國際化支持這樣做,你可能會考慮http://codex.wordpress.org/Function_Reference/date_i18n

date_i18n('l j F Y', strtotime(str_replace('/', '-', '23/02/2012'))) 
+0

你是這個人的作品,你知道是否可以用荷蘭語顯示日期和月份,或者我需要做一個數組並比較結果嗎? – Uffo 2012-02-22 17:12:50

+0

這就是'date_i18n'的目的,用於重新設置日期*的格式並將它的組件翻譯成目標語言。 [date_i18n的源代碼](https://github.com/WordPress/WordPress/blob/master/wp-includes/functions.php#L70)使用全局'$ wp_locale'變量來轉換日期組件。如果他們沒有被翻譯,你的問題可能與你的WordPress的i18n配置。 – deefour 2012-02-22 20:38:52

2

我想還有其他的方法可以做到這一點,但我想如下做到這一點:

當選擇「 save_post':

$date = explode ('/',$_POST["date_field"]); 
$date = $date[1].'/'.$date[0].'/'.$date[2]; // dd/mm/yyyy to mm/dd/yyyy 
$s = strtotime($date); /* UNIX TIMESTAMP */ 

然後將Unix時間戳存儲在數據庫中。

在「amdin_init」你需要做的完全相反的加載時間在metabox正確的格式:

global $post; 
$custom = get_post_custom($post->ID); 
if ($custom["date_field"][0]) { 
    $d = date("d/m/Y",$custom["date_field"][0]); // convert unix timestamp 
} else { 
    $d = ""; 
} 

而在你的模板文件,使用PHP函數setlocalestrftime顯示日期:

$custom = get_post_custom($post->ID); 
$d = $custom["date_field"][0]; 
setlocale(LC_TIME, 'nl_NL'); 
$s = strftime('%#d %B %Y',$s); 

這應該輸出像2012年1月13日