时区缩写的问题:中国标准时间和美国中部标准时间都是 CST?

2023-11-17 09:25:50 +08:00
 villivateur

刚刚给服务器配时区突然意识到,中国标准时间( China Standard Time ),和美国中部标准时间( Central Standard Time )都是 CST ,这难道不会有歧义吗?

5620 次点击
所在节点    程序员
58 条回复
cocogovern
2023-11-17 09:32:51 +08:00
一般会有时区吧
ltyj2003
2023-11-17 09:34:38 +08:00
UTC 用得比较多吧,中国 UTC+8
CodeCodeStudy
2023-11-17 09:35:11 +08:00
用 Aisa/Shanghai 啊,或者用 PRC
arnoldxiao
2023-11-17 09:36:42 +08:00
@ltyj2003 这个是最好的
mschultz
2023-11-17 09:38:12 +08:00
Wikipedia:

时区通常都用字母缩写形式来表示,例如“EST 、WST 、CST”等。但是它们并不是 ISO 8601 标准的一部分,不应单独用它们作为时区的标识。一些缩写可能意义模糊,例如“BST”应当是英国夏令时,但在 1968 年到 1971 年间被重命名为“英国标准时”,这只是因为立法者不愿称其为中欧时间。在该法案中还确认英国的标准时间仍然为格林威治标准时。

Ref: https://zh.wikipedia.org/wiki/时区
chendy
2023-11-17 09:38:58 +08:00
代码里我选择 UTC+8
每次都想不起来 beijing 到底需不需要大写有没有下划线(刚看了一眼 HongKong 有下划线)
wu67
2023-11-17 09:46:33 +08:00
@chendy 现在 hongkong 我也不敢用了, 因为每次都会想到在后面加上 doll
codehz
2023-11-17 09:50:40 +08:00
对,而且最近刚好因为这事,配合 chrome 的一个 bug 出过问题
https://bugs.chromium.org/p/chromium/issues/detail?id=1473422
chrome 在某次更改中打破了原有识别时区的逻辑,导致 fallback 到通过类似 cst 这样的三字母去解析时区,然后因为冲突和一些映射方面的问题,导致时区错误,或者获取到 undefined 的问题
tool2d
2023-11-17 09:51:43 +08:00
我看了一下自己以前写的代码,确实很离谱。

if (timeadj == "cst") localadj = -( 6 *3600 ); // Central Standard Time (North America)
if (timeadj == "cst") localadj = ( 9 *3600 +60*30 ); // Central Standard Time (Australia)
if (timeadj == "cst") localadj = (10 *3600 +60*30 ); // Central Summer Time (Australia)
if (timeadj == "cst") localadj = -( 5 *3600 ); // Cuba Standard Time
if (timeadj == "cst") localadj = ( 8 *3600 ); // China Standard Time
vuevue
2023-11-17 09:54:52 +08:00
主要看偏移量,看缩写有可能是算出来的不准
rickiey
2023-11-17 10:13:23 +08:00
CST 全球至少有 4 个国家地区用的缩写,在哪看到过,忘了,具体还得 +08:00
hahastudio
2023-11-17 10:20:51 +08:00
真正弄时区我觉得应该用 Asia/Shanghai 这类的地区,操作系统提供选择的也是地区
因为有的地区有夏令时,比如现在我们早晨 10 点的时候,加州那边是前一天晚上 6 点;然后上个月的时候,我们的早晨 10 点是加州那边的晚上 7 点
然后不同年份,同一地区的时区可能不同,我们之前也试行过几年夏令时
hahastudio
2023-11-17 10:22:29 +08:00
@rickiey
北京时间,China Standard Time
澳洲中部时间,Central Standard Time (Australia)
北美中部时区,Central Standard Time (North America)
古巴标准时间,Cuba Standard Time ,参见北美东部时区
7inFen
2023-11-17 10:32:00 +08:00
我感觉“2023-03-07T10:30:00Z”这种格式的时间最好用,客户端拿到后会解释为本地时区的时间
mingwiki
2023-11-17 10:46:44 +08:00
我一直用的 Asia/Singapore (CST, +0800)
codehz
2023-11-17 10:50:05 +08:00
@vuevue 偏移量也不一定准,你考虑下夏时令,还有其实各国也可能随时更新它的时区,因此需要一个动态的数据
gps949
2023-11-17 10:51:24 +08:00
@wu67 你是把你的输入法训练出来了吗?😂
nzynzynzy
2023-11-17 11:10:23 +08:00
还是得看城市,因为 UTC +几并不能代表夏令时/冬令时
vishun
2023-11-17 11:27:24 +08:00
中情局我特么原先一直以为是中国的。。。
sherlockwoo
2023-11-17 11:38:28 +08:00
Javaer 可太熟了:
Java 的 CST 代表美国中部标准时间( Central Standard Time ),MySQL 的 CST 代表中国标准时间( China Standard Time ),两者相差 13~14 小时

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/992656

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX