Col*_*ner 4 php datetime laravel php-carbon
我正在尝试使用 Carbon 从 Laravel 5.3 中的 UTC 偏移量获取时区名称。下面列出的代码任何帮助将不胜感激。
/* current code iteration */
$utcOffset = -5;
$timezone = Carbon::now($utcOffset)->timezone->getName();
echo $timezone;
// Result: -05:00
// Expected Result: EST
/* tried code */
$timezone = Carbon::now($utcOffset)->tzName;
// Result: -05:00
/* What I used prior to Carbon */
$timezone = timezone_name_from_abbr(null, $utcOffset * 3600, TRUE);
$dateTime = new DateTime();
$dateTime->setTimeZone(new DateTimeZone($timezone));
$timezone = $dateTime->format('T');'
Run Code Online (Sandbox Code Playgroud)
我缺少什么?我感觉很傻..
前言:
接受的答案在大多数情况下都有效,但正如在timezone_name_from_abbr()用户贡献的注释区域中提到的,使用该函数存在问题,例如返回 false 而不是实际时区,以及返回“历史”(即已弃用的)时区标识符而不是给定位置的当前标准。至今仍然有效。
另外,只要您知道根据 Carbon 文档,原始代码就会按预期返回值,如果您查看https://carbon.nesbot.com/docs/#api-timezone
时区的原始名称(可以是区域名称或偏移字符串):
这里还要注意的另一件事是,根据偏移值导出时区被认为是不可靠的,因为它没有考虑 DST 观察周期偏移。
因此,这实际上是说,根据偏移量导出时区并不总是可能的。
回答:
但由于OP提到了基于偏移量的碳和时区,根据目前的碳文档,答案应该是
$date = Carbon::now('-5');
echo $date->tzName;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23838 次 |
| 最近记录: |