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

时间:2016-11-30 17:23:42

标签: php datetime

PHP中是否有办法从DateTime对象获取字符串,根据语言环境配置考虑日期格式而不使用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

1 个答案:

答案 0 :(得分:1)

strftime() php manual中说

  

根据区域设置格式化时间和/或日期。月份和工作日名称以及其他依赖于语言的字符串遵循使用setlocale()设置的当前语言环境。

因此,请先查看setlocale()并在使用格式化日期之前进行更改。

如何格式化日期时间区域设置

  

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

     

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

示例

$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>";

<强>输出

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

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

注意

我从this page获得了区域设置;