Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更改、翻译日期格式_Php_Date - Fatal编程技术网

Php 更改、翻译日期格式

Php 更改、翻译日期格式,php,date,Php,Date,我的代码中有一个简单的问题。 我有一个功能,我把日期转换成意大利语格式,我想把格式改成英语 我试过这个: 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_st

我的代码中有一个简单的问题。 我有一个功能,我把日期转换成意大利语格式,我想把格式改成英语

我试过这个:

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);
}
我以前的开始日期是:

01/lug/2013
(相当于2013年7月1日)

当我试图打印新的日期开始时,我检索到它,因为它无法识别
lug

1970/01/01 
有没有办法将意大利语日期转换为英语,并在更改格式后转换


谢谢

在您的情况下,我将使用一个简单的翻译数组将意大利语月份名称转换为英语月份名称。像这样的方法应该会奏效:-

/**
 * @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)

有关更多信息,请参阅。

您是否尝试过
setlocale()
后跟
strftime()
?是的,我使用过此解决方案!谢谢+例如,这是我见过的最快的接受!!很高兴您有了解决方案:)