gpt4 book ai didi

java - 为什么java simpledateformat解析方法不支持时区id

转载 作者:行者123 更新时间:2023-11-30 07:19:28 26 4
gpt4 key购买 nike

java的SimpleDateFormat parse方法支持timezone short name、long name和offset。为什么不支持时区 ID??

例如。

SimpleDateFormat sdf = new SimpleDateFormat("z");
sdf.parse("IST"); //works fine

SimpleDateFormat sdf = new SimpleDateFormat("z");
sdf.parse("Indian Standard Time"); //Also works fine

为什么java不支持这个:

SimpleDateFormat sdf = new SimpleDateFormat("z");
sdf.parse("Asia/Kolkata"); //does not work

最佳答案

我们应该问 JDK 开发人员为什么他们决定 SimpleDateFormat 不应该支持时区 ID。 SimpleDateFormat API 也不清楚它期望“z”的时区格式。但我知道它支持什么。它根据 DateFormatSymbols.getZoneStrings() 返回的数据检查时区。它是一个时区数组,每个时区是一个字符串数组

    •[0] - time zone ID
•[1] - long name of zone in standard time
•[2] - short name of zone in standard time
•[3] - long name of zone in daylight saving time
•[4] - short name of zone in daylight saving time

区域 ID 未本地化;其他是本地化名称。有关详细信息,请参阅 API。

我们可以获得所有可用的时区作为

    DateFormatSymbols dfs = DateFormatSymbols.getInstance();
for(String[] s : dfs.getZoneStrings()) {
System.out.println(Arrays.toString(s));
}

结果(取决于语言环境)

...
[Asia/Calcutta, India Standard Time, IST, India Daylight Time, IDT]
...

所以 SimpleDateFormat(在我的语言环境中)允许印度标准时间、IST、印度夏令时或“z”的 IDT,但它不允许亚洲/加尔各答(时区 ID)

关于java - 为什么java simpledateformat解析方法不支持时区id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14644614/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com