4

我有$date = $run['at'];它给了我2013-06-03T16:52:24Z(来自 JSON 输入)。要将其转换为例如“ d MY, H:i ”,我使用

$date = new DateTime($run['at']);
echo $date->format('d M Y, H:i');

问题是我需要意大利语的日期。唯一支持的功能set_localestrftime. 我如何“包装” (或DateTime::format替换strftime,不知道)?

4

3 回答 3

22
setlocale(LC_TIME, 'it_IT.UTF-8');
$date = new DateTime($run['at']);
strftime("%d %B", $date->getTimestamp())

...工作。:)

于 2013-06-03T22:46:37.587 回答
0

这就是我解决结合DateTimestrftime()的功能的方法。

第一个允许我们管理具有奇怪日期格式的字符串,例如“Ymd”。第二个允许我们将日期字符串翻译成某种语言。

例如,我们从一个值“20201129”开始,我们希望以一个意大利可读的日期结束,日期和月份的名称,也是第一个大写字母:“Domenica 29 novembre 2020”。

// for example we start from a variable like this
$yyyymmdd = '20201129';

// set the local time to italian
date_default_timezone_set('Europe/Rome');
setlocale(LC_ALL, 'it_IT.utf8');

// convert the variable $yyyymmdd to a real date with DateTime
$truedate = DateTime::createFromFormat('Ymd', $yyyymmdd);

// check if the result is a date (true) else do nothing
if($truedate){

  // output the date using strftime
  // note the value passed using format->('U'), it is a conversion to timestamp
  echo ucfirst(strftime('%A %d %B %Y', $truedate->format('U')));

}

// final result: Domenica 29 novembre 2020
于 2020-11-29T15:39:35.007 回答
-3

我相信“正确”的方式应该是使用DateTimeZone

于 2014-08-06T07:57:05.670 回答