gpt4 book ai didi

java - 从字符串中提取 TimeZone 对象的最佳方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:52:30 26 4
gpt4 key购买 nike

我有一个包含原始日期字段(存储为字符数据)的数据库字段,例如

Friday, September 26, 2008 8:30 PM Eastern Daylight Time

我可以使用 SimpleDateFormat 轻松地将其解析为日期

DateFormat dbFormatter = new SimpleDateFormat("EEEE, MMMM dd, yyyy hh:mm aa zzzz");
Date scheduledDate = dbFormatter.parse(rawDate);

我想做的是从此字符串中提取一个 TimeZone 对象。此应用程序运行的 JVM 中的默认时区是格林威治标准时间,因此我无法使用上面解析的 Date 中的 .getTimezoneOffset()(因为它将返回默认值时区)。

除了标记原始字符串并找到时区字符串的起始位置(因为我知道格式将始终为 EEEE, MMMM dd, yyyy hh:mm aa zzzz)是否有使用方法DateFormat/SimpleDateFormat/Date/Calendar API 以提取 TimeZone 对象 - 它将具有与我用 DateFormat.parse() 解析的字符串相同的 TimeZone?

关于 Java API 中的 DateCalendar 让我烦恼的一件事是 Calendar 应该替换 Date 在所有地方......但后来他们决定,哦,嘿,我们仍然在 DateFormat 类中使用 Date

最佳答案

我发现了以下内容:

        DateFormat dbFormatter = new SimpleDateFormat("EEEE, MMMM dd, yyyy hh:mm aa zzzz");
dbFormatter.setTimeZone(TimeZone.getTimeZone("America/Chicago"));
Date scheduledDate = dbFormatter.parse("Friday, September 26, 2008 8:30 PM Eastern Daylight Time");
System.out.println(scheduledDate);
System.out.println(dbFormatter.format(scheduledDate));
TimeZone tz = dbFormatter.getTimeZone();
System.out.println(tz.getDisplayName());
dbFormatter.setTimeZone(TimeZone.getTimeZone("America/Chicago"));
System.out.println(dbFormatter.format(scheduledDate));

产生以下内容:

Fri Sep 26 20:30:00 CDT 2008
Friday, September 26, 2008 08:30 PM Eastern Standard Time
Eastern Standard Time
Friday, September 26, 2008 08:30 PM Central Daylight Time

我实际上发现这有点令人惊讶。但是,我想这表明您的问题的答案是在解析后简单地在格式化程序上调用 getTimeZone。

编辑:以上是使用 Sun 的 JDK 1.6 运行的。

关于java - 从字符串中提取 TimeZone 对象的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/85701/

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