Php 考虑区域设置日期格式,将DateTime对象转换为字符串

Php 考虑区域设置日期格式,将DateTime对象转换为字符串,php,datetime,Php,Datetime,在PHP中,有没有一种方法可以从DateTime对象中获取字符串,根据语言环境配置考虑日期格式,而不必使用countries=>格式数组 $dt = DateTime::createFromFormat(DateTime::ISO8601, '2016-07-27T19:30:00Z'); $ $usadt = /* What PHP function here? */ $ $brazildt = /* What PHP function here? */ echo ("USA Format

在PHP中,有没有一种方法可以从
DateTime
对象中获取字符串,根据语言环境配置考虑日期格式,而不必使用
countries=>格式数组

$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
上面说

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

因此,在使用格式化日期之前,请查看并更改它

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

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

%X

示例

$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>";
$dt=DateTime::createFromFormat(DateTime::ISO8601,'2016-07-27T19:30:00Z');
setlocale(LC_TIME,'en_US');
$usadt=strftime('%x%x',$dt->getTimestamp());
设置语言环境(LC_TIME,'pt_BR.UTF-8');
$brazildt=strftime('%x%x',$dt->getTimestamp());
echo“美国格式:$usadt
”; echo“巴西格式:$brazildt
”;
输出

美国格式:07/27/2016 12:30:00 PM

巴西格式:27-07-2016 12:30:00

注意

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

我从你那里得到了地点

你正在寻找的答案可能是重复的哼哼。。。这不是我想要的,因为这些帖子需要明确格式。年/月/日或日/月/年取决于国家/地区,我需要自动从区域设置中获取顺序。我看不出sftrftime()如何根据区域设置为我提供“年/月/日”或“日/月/年”。同样的情况也会发生在上午/下午或24小时。。。如果是这种情况,请发布示例…@mendes我已经用进一步的解释和示例更新了解决方案。已解决。谢谢