嘿,我正在為日期格式而苦苦掙扎。我需要調整 wordpress 專案中某些日期的顯示。
它不是這個問題的重復我嘗試了那里的建議,但它不適用于特定的日期格式。
我所擁有german date
的格式D, d. MM yyyy
如下:Fr, 6. Mai 2022
我想將它轉換為yyyy-mm-dd
=2022-05-06
但我無法讓它作業。我曾嘗試使用date_parse_from_format和date_create_from_format但由于德國月份和日期名稱,它似乎失敗了。
$date_german = 'Fr, 6. Mai 2022';
$date_english = 'Fri, 6. May 2022';
print_r(date_create_from_format('D, d. F Y', $date_german)); // doesn't work
print_r(date_create_from_format('D, d. F Y', $date_english)); // works ()
再次嘗試使用 IntlDateFormatter
$date = 'Fr, 6. Mai 2022';
$formatter = new IntlDateFormatter("de_DE", IntlDateFormatter::SHORT, IntlDateFormatter::NONE);
$formatter->setPattern('D, d. F Y');
$unixtime=$formatter->parse($date);
$datetime=new DateTime();
$datetime->setTimestamp($unixtime);
echo $datetime->format('Y-m-d');
也不作業,它回傳:1970-01-01
因為 $unixtime 是空的?
我也嘗試在格式化之前將本地環境設定為 de_DE,但仍然存在同樣的問題。
uj5u.com熱心網友回復:
執行此操作的 IMO 正確方法確實是使用IntlDateFormatter
,但是您使用了錯誤的格式常量。
這應該有效:
$date = 'Fr, 6. Mai 2022';
$formatter = new IntlDateFormatter("de_DE", IntlDateFormatter::SHORT, IntlDateFormatter::NONE);
$formatter->setPattern('EEEEEE, d. MMM y');
$unixtime=$formatter->parse($date);
$datetime=new DateTime();
$datetime->setTimestamp($unixtime);
echo $datetime->format('Y-m-d');
intl 的常量串列位于https://unicode-org.github.io/icu/userguide/format_parse/datetime/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/470801.html
上一篇:將日期的月份轉換為序列
下一篇:日期過后的第二天洗掉行