對不起,如果這是一個愚蠢 - 很多類似的問題,但很明顯,如果我能找到一個確切的答案,我不會問:) :)帶有intl-aware天后綴的PHP日期格式?
注意我來自.net和PHP新手,所以那裏可能是noob規模的錯誤。
我希望能夠輸出例如新的DateTime('2014-01-01 13:15:00')爲: '2014年1月1日星期三下午1:15'(可能 - 非本地化)或'Mercredi 1er Janvier 2014à13h15'(不可能?)。
基本上,似乎沒有等同於PHP的'S'日期格式說明符的ISO格式,也沒有用於strftime的格式?
IntlDateFormatter :: FULL關閉 - 但'1月1日星期三'或'mercredi 1 janvier'不是很好的英語(或法語) - 但它似乎是我能得到的最接近的?如果我不得不這樣做,我可以沒有'上','上'和'上',但是序號後綴會很好。 ('星期三一月' - 這是什麼,開始一首詩?)
我在strftime部分看到one example關於解決這個問題的PHP.net的評論(這似乎表明這是一個問題) - 但是它似乎只是添加了英文後綴,這似乎沒有多大用處?我想要一個簡單的方法,它需要一個UTC日期時間,一個語言環境和一個時區,並輸出一個本地化的字符串 - 最好以「正確」的人類可讀格式(如上所述)儘可能使用英文。我想實現這個沒有寫入世界上每種語言的格式字符串。如果它在我的Windows開發盒以及* nix生產盒上工作,它也會很好。
<?php
$utcdate = new DateTime('2014-01-01 13:15:00', new DateTimeZone('UTC'));
echo $utcdate->format('l \t\h\e jS \o\f F Y \a\t g:ia') . "<br>";
function dumpDates($date, $locale, $tz){
$date->setTimeZone(new DateTimeZone($tz));
$fmt = new IntlDateFormatter($locale, IntlDateFormatter::FULL, IntlDateFormatter::FULL,
$tz, IntlDateFormatter::GREGORIAN );
echo $fmt->format($date) . "<br>";
// doesn't work under windows?
setLocale(LC_TIME, $locale);
echo strftime('%A, %#d %B %Y %I:%M:%S %p', $date->getTimeStamp()) . "<br>";
}
dumpDates($utcdate, 'en_GB', 'Europe/London');
dumpDates($utcdate, 'de_DE', 'Europe/Berlin');
dumpDates($utcdate, 'fr_FR', 'Europe/Paris');
?>