这就是我解决结合DateTime和strftime()的功能的方法。
第一个允许我们管理具有奇怪日期格式的字符串,例如“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