首先,回答您的具体问题:
>所有基于缩写的标识符都应视为已弃用.它们不足以识别保留所有细节的特定时区.例如,您可以看到使用中欧时间here的所有位置.其中一些使用全年的CET,其中一些在冬季使用CET,而在夏季使用CEST.其中,并非所有这些都使用相同的DST过渡日,或者在其历史记录中具有相同的时区偏移. CET中没有足够的信息来决定使用哪组规则.
>使用GMT或UTC是相对安全的,因为这些是明确的.然而,使用Etc / GMT或Etc / UTC会更正确.如果您只选择一个,恕我直言,它应该是Etc / UTC.
>正如我所提到的,CET应该被视为已弃用,以及其他缩写.但是,值得注意的是,一些缩写(如CET)来自TZ数据库,而一些(如AST)则来自Java的遗留.这种区别很重要,因为只有TZDB才能用于可能在其他地方传输并由非基于Java的系统解释的数据.
特别值得注意的是,认识到美国缩写PST和CST不在TZDB中,即使MST和EST是.
>您应该选择与您的方案相关的基于位置的时区,而不是CET.如果您正在谈论法国,请使用欧洲/巴黎.如果你在谈论波兰,请使用欧洲/华沙等.
接下来,要了解底层TZ Database有多种类型的标识符可供使用:
>位置,以区域/地点的形式
>例如:America / New_York,欧洲/伦敦,太平洋/檀香山
>位置,以区域/地区/地区的形式
>例如:美国/阿根廷/布宜诺斯艾利斯,美国/印第安纳州/诺克斯
>管理区域,在Etc名称空间中:
>例如:Etc / UTC,Etc / GMT 2,Etc / GMT-5
> / – 基于POSIX标准,与通常预期的ISO标准相反
>常用于海上船舶
它还有几种形式是历史的工件,不应再使用了:
>基于位置,以国家或国家/州或地区的形式
>例如:美国/太平洋,美国/夏威夷,巴西/东部,加拿大/纽芬兰,埃及,古巴
>美国大陆的POSIX标识符:
>例如:EST5EDT,CST6CDT,MST7MDT,PST8PDT
>缩写 – 无论如何都有一些
>例如:EST,EET,PRC,WET
此外,Java之前已将这些标识符扩展为包含不属于TZ数据库的其他缩写.我能够找到它们列为here,作为其相应的TZ数据库现代标识符的链接:
Link Australia/Darwin ACT
Link Australia/Sydney AET
Link America/Argentina/Buenos_Aires AGT
Link Africa/Cairo ART
Link America/Anchorage AST
Link America/Sao_Paulo BET
Link Asia/Dhaka BST
Link Africa/Harare CAT
Link America/St_Johns CNT
Link America/Chicago CST
Link Asia/Shanghai CTT
Link Africa/Addis_Ababa EAT
Link Europe/Paris ECT
Link America/New_York EST
Link Pacific/Honolulu HST
Link America/Indianapolis IET
Link Asia/Calcutta IST
Link Asia/Tokyo JST
Link Pacific/Apia MIT
Link America/Denver MST
Link Asia/Yerevan NET
Link Pacific/Auckland NST
Link Asia/Karachi PLT
Link America/Phoenix PNT
Link America/Puerto_Rico PRT
Link America/Los_Angeles PST
Link Pacific/Guadalcanal SST
Link Asia/Saigon VST
当然,这些映射可能也可能没有意见 – 但据报道它们是Java的TZUpdater工具用来继承对这些遗留Java时区缩写的支持.