考虑到语言环境日期格式,将DateTime对象转换为字符串

问题描述:

Is there a way in PHP to get a string from a DateTime object considering the date format according to the locale configuration without having an array of countries => formats ?

$dt = DateTime::createFromFormat(DateTime::ISO8601, '2016-07-27T19:30:00Z');

$ $usadt = /* What PHP function here? */
$ $brazildt = /* What PHP function here? */

echo ("USA Format: " . $usadt);
echo ("Brazil Format: " . $brazildt);

USA Format: 2016/07/27 07:30pm
Brazil Format: 27/07/2016 19:30

考虑到日期,PHP中是否有办法从 DateTime code>对象获取字符串 根据区域设置配置格式化而不具有 countries =>的数组 格式 code>? p>

  $ dt = DateTime :: createFromFormat(DateTime :: ISO8601,'2016-07-27T19:30:00Z'); 
 
  $ $ usadt = / *这里有什么PHP功能?  * / 
 $ $ brazildt = / *这里有什么PHP功能?  * / 
 
echo(“美国格式:”。$ usadt); 
echo(“巴西格式:”。$ brazildt); 
 
USA格式:2016/07/27 07:30 pm 
Brazil格式:27 /  07/2016 19:30 
  code>  pre> 
  div>

In the strftime() php manual it says

Format the time and/or date according to locale settings. Month and weekday names and other language-dependent strings respect the current locale set with setlocale().

So take a look at setlocale() and change it before using formatted date.

how to format for your datetime locale

%x Preferred date representation based on locale, without the time

%X Preferred time representation based on locale, without the date

example

$dt = DateTime::createFromFormat(DateTime::ISO8601, '2016-07-27T19:30:00Z');
setlocale(LC_TIME, 'en_US');
$usadt = strftime('%x %X', $dt->getTimestamp());
setlocale(LC_TIME, 'pt_BR.UTF-8');
$brazildt = strftime('%x %X', $dt->getTimestamp());
echo "USA Format: $usadt<br>";
echo "Brazil Format: $brazildt<br>";

outputs

USA Format: 07/27/2016 12:30:00 PM

Brazil Format: 27-07-2016 12:30:00

note

I got the locales from this page;