You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何将时区文本(如'America/New_York')转换为缩写(如'EST')

文本时区转3字符缩写的实现方案

不管是在数据库层面直接转换,还是在应用程序里处理,都有简便的解决办法,以下分场景说明:

数据库层面处理

MySQL

用CONVERT_TZ将UTC时间转换为目标时区,再通过DATE_FORMAT的%Z参数提取时区缩写:

SELECT DATE_FORMAT(CONVERT_TZ(NOW(), 'UTC', 'America/New_York'), '%Z');

注:结果会自动适配夏令时(比如纽约时区会返回EST或EDT)。

PostgreSQL

通过AT TIME ZONE指定目标时区,再用to_char的TZ格式符获取缩写:

SELECT to_char(current_timestamp AT TIME ZONE 'America/New_York', 'TZ');

SQL Server

借助AT TIME ZONE转换时区后,用FORMAT的zzz参数提取缩写:

SELECT FORMAT(SYSDATETIMEOFFSET() AT TIME ZONE 'America/New_York', 'zzz');

应用程序层面处理

Python(3.9+)

使用标准库zoneinfo(无需额外安装):

import datetime
from zoneinfo import ZoneInfo

tz = ZoneInfo('America/New_York')
dt = datetime.datetime.now(tz)
print(dt.strftime('%Z'))  # 输出 EST 或 EDT

旧版本Python可以用pytz库实现类似逻辑。

JavaScript

通过Intl.DateTimeFormat的timeZoneName: 'short'配置提取缩写:

const targetTz = 'America/New_York';
const formatter = new Intl.DateTimeFormat('en-US', {
  timeZone: targetTz,
  timeZoneName: 'short'
});
const tzAbbr = formatter.formatToParts(new Date()).find(part => part.type === 'timeZoneName').value;
console.log(tzAbbr);  // 输出 EST 或 EDT

注意事项

时区缩写存在歧义(比如CST可代表中国标准时间、中部标准时间等),如果用于业务逻辑判断,建议保留原始的完整时区ID;仅用于前端显示时,上述方法足够满足需求。

内容的提问来源于stack exchange,提问作者user608207

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 23:02:35