我对下面的代码有疑问。如何格式化德国日期,例如“Di,02.Okt 2012”到“2012-10-02”?
我已经检查了许多网站的解决方案,但没有找到可以帮助我的东西。
$value ='Di, 02.Okt 2012';
$tempdate = $value;
$tempdate = substr($tempdate,-11);
$tempdate = date('Y-m-d',$tempdate);
输出:1970-01-01
解决:
$value = 'comes from a foreach loop';
$tempdate = $value;
$tempdate = substr($tempdate,-11);
$tempdate = str_replace('.Jan ', '-01-', $tempdate);
$tempdate = str_replace('.Feb ', '-02-', $tempdate);
$tempdate = str_replace('.Mär ', '-03-', $tempdate);
$tempdate = str_replace('.Apr ', '-04-', $tempdate);
$tempdate = str_replace('.Mai ', '-05-', $tempdate);
$tempdate = str_replace('.Jun ', '-06-', $tempdate);
$tempdate = str_replace('.Jul ', '-07-', $tempdate);
$tempdate = str_replace('.Aug ', '-08-', $tempdate);
$tempdate = str_replace('.Sep ', '-09-', $tempdate);
$tempdate = str_replace('.Okt ', '-10-', $tempdate);
$tempdate = str_replace('.Nov ', '-11-', $tempdate);
$tempdate = str_replace('.Dez ', '-12-', $tempdate);
$tempdate = date('Y-m-d',strtotime($tempdate));
echo $tempdate.'<br/>';
这是许多日期的解决方案。 ^^我希望我可以帮助它
答案 0 :(得分:4)
将包含德国日期和月份的$date_string
变量传递给使用strtr (string translate)以及德国日(和月)数组的函数将允许{{ 3}}正确解析:
由于any English textual datetime description仅解析英语,因此在没有strtotime (string to unix timestamp)的情况下需要手动干预来翻译这些字符串。
function germanStrtotime($date_string) {
$germanDays = array('montag'=>'monday', 'mo'=>'monday', 'dienstag'=>'tuesday', 'di'=>'tuesday', 'mittwoch'=>'wednesday', 'mi'=>'wednesday', 'donnerstag'=>'thursday', 'do'=>'thursday', 'freitag'=>'friday', 'fr'=>'friday', 'samstag'=>'saturday', 'sa'=>'saturday', 'sonntag'=>'sunday', 'so'=>'sunday');
$germanMonths = array('jnuar'=>'january', 'jan'=>'january', 'jän'=>'january', 'februar'=>'february', 'feb'=>'february', 'marz'=>'march', 'märz'=>'march', 'mai'=>'may', 'juni'=>'june', 'oktober'=>'october', 'okt'=>'october', 'sept'=>'september', 'dezember'=>'december', 'dez'=>'december');
$str = strtr(strtolower($date_string), $germanMonths);
$str = strtr(strtolower($str), $germanDays);
return strtotime($str);
}
$value ='Di, 02.Okt 2012';
$tempdate = $value;
$tempdate = germanStrtotime($tempdate);
$tempdate = date('Y-m-d', $tempdate);
die('Output: '.$tempdate); // 2012-10-02
答案 1 :(得分:0)
对于国际化任务,我强烈建议您使用PHP intl扩展名。它包含几个用于常见国际化任务的类,例如日期/时间格式,数字格式,字符串音译等。具体来说,IntlDateFormatter类可以格式化(和解析)任何可用语言环境的日期时间。
答案 2 :(得分:0)
这适用于你的例子。
当你有另一个约会时,替换&#34; Okt&#34;与另一个月和&#34; -10 - &#34;与月份的数量。
GId