Php 如果语言不是英语,如何将字符串转换为日期时间
有一个日期和时间字符串,格式为“2ааааа2020,21:00,П'ааааа 我想把它转换成DateTime。 我试着转换Php 如果语言不是英语,如何将字符串转换为日期时间,php,string,Php,String,有一个日期和时间字符串,格式为“2ааааа2020,21:00,П'ааааа 我想把它转换成DateTime。 我试着转换 setlocale(LC_ALL, 'uk_UA'); $t = '2 листопада 2020, 21:00, п’ятниця'; $date = date_create_from_format('j F Y, H:i, l', $t); 如果语言为英语,则转换日期(如果乌克兰语不起作用)。如何设置转换语言。我认为setLocale设置不会影响Date
setlocale(LC_ALL, 'uk_UA');
$t = '2 листопада 2020, 21:00, п’ятниця';
$date = date_create_from_format('j F Y, H:i, l', $t);
如果语言为英语,则转换日期(如果乌克兰语不起作用)。如何设置转换语言。我认为setLocale设置不会影响DateTime类的功能。这门课需要英文名字。解决这个问题的一个简单方法是翻译月份名称而忽略日期名称。如果忽略日期名称,则示例中的错误名称无法生成错误
$t = '2 листопада 2020, 21:00, п’ятниця';
$trans = [
'січня' => "January",
'лютого' => "February",
'березня' => "March",
'квітня' => "April",
'травня' => "May",
'червня' => "June",
'липня' => "July",
'серпня' => "August",
'вересня' => "September",
'жовтня' => "October",
'листопада' => "November",
'грудня' => "December",
];
$inputEn = strtr($t, $trans);
$date = date_create_from_format('j F Y, H:i, *', $inputEn);
var_dump($date);
//object(DateTime)#1 (3) { ["date"]=> string(26) "2020-11-02 21:00:00.000000" ...
此解决方案独立于setlocale设置工作
上面显示的算法内置于一个名为dt的PHP扩展中,用于DateTime API。你可以找到它
与该类一起使用非常简单:
$t = '2 листопада 2020, 21:00, п’ятниця';
$ok = dt::setDefaultLanguage('uk_UA');
$dt = dt::createDtFromFormat('j F Y, H:i, *', $t);
echo $dt; //2020-11-02 21:00:00
2020年11月2日不是星期五@没有星期五也不行<代码>代码$t='2аиаааа2020,21:00';setlocale(LC_ALL,'uk','ukr')$日期=从格式创建日期('JFY,H:i',$t)
code
您应该检查是否安装了ukr语言环境:@Sammitch我试过了,一台机器有不同的语言环境“uk_-UA”,但代码仍然不起作用。在我看来,date\u create\u from\u格式只适用于英语。请检查setLocale()的返回值$retVal=setlocale(LC_ALL,'uk_UA');var_dump($retVal);如果未安装ukr区域设置,则会得到false。