我的代码中有一个简单的问题。 我有一个功能,我将日期转换为意大利语格式,我想将格式更改为英语。
我试过这个:
public function changeDateFormat($date_start_old){
$date_start_old = strtotime($date_start_old);
$date_start = date("Y/m/d" , $date_start_old);
echo('Date start: '.$date_start);
}
我的旧date_start是:
01/lug/2013
(相当于2013年7月1日)
当我尝试打印新的date_start时,我检索到这个因为无法识别lug
:
1970/01/01
有没有办法将意大利语日期转换为英语和更改后的格式?
由于
答案 0 :(得分:2)
在您的情况下,我会使用简单的翻译数组将意大利月份名称转换为英文月份名称。这样的事情应该有效: -
/**
* @param $dateStr
* @return DateTime
*/
function getDateFromItalian($dateStr)
{
$translation = array(
'gennaio' => 'January',
'febbraio' => 'February',
'marzo' => 'March',
'aprile' => 'April',
'maggio' => 'May',
'giugno' => 'June',
'luglio' => 'July',
'agosto' => 'August',
'settembre' => 'September',
'ottobre' => 'October',
'novembre' => 'November',
'dicembre' => 'December',
'gen' => 'January',
'feb' => 'February',
'mar' => 'March',
'apr' => 'April',
'mag' => 'May',
'giu' => 'June',
'lug' => 'July',
'ago' => 'August',
'set' => 'September',
'ott' => 'October',
'nov' => 'November',
'dic' => 'December',
);
list($day, $month, $year) = explode('/', $dateStr);
return new \DateTime($day . ' ' . $translation[strtolower($month)] . ' ' . $year, new \DateTimeZone('Europe/Rome'));
}
var_dump(getDateFromItalian('01/lug/2013'));
输出: -
object(DateTime)[1]
public 'date' => string '2013-07-01 00:00:00' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'Europe/Rome' (length=11)
请参阅PHP DateTime manual了解详情。