如何将特定时区转换为PHP中相应的缩写?

Deb*_*yak 1 php timezone

我的输入是时区值(比如"america/los_angeles"),其输出应该是时区缩写(比如说"PST").

输入:"america/los_angeles"
输出:"PST"

输入:"Asia/Kolkata"
输出:"IST"

我知道这可以通过将时区值映射到其相应的缩写来完成,但这很耗时.

那么有没有PHP内置函数,虽然我可以实现这一点?

Kev*_*vin 5

只需使用date('T')函数来获取时区.你需要设置它:

$input = 'america/los_angeles';
date_default_timezone_set($input);
echo date('T');
Run Code Online (Sandbox Code Playgroud)

参考资料在手册中.T(capital)对应于Timezone缩写

另一种变化是使用DateTime类:

$input = 'Asia/Kolkata';
$dt = new DateTime(null, new DateTimeZone($input));
echo $dt->format('T');
Run Code Online (Sandbox Code Playgroud)

编辑:请注意,您还需要考虑输入是否正确,这会引发异常,因为它无效.

您可以通过try/catch以下方式处理:

$input = 'Asia/Kolkata';
try {
    $dt = new DateTime(null, new DateTimeZone($input));
    echo $dt->format('T');  
} catch(Exception $e) {
    echo $e->getMessage();
}
Run Code Online (Sandbox Code Playgroud)