从String中提取TimeZone对象的最佳方法?

mat*_*t b 8 java timezone

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

2008年9月26日星期五东部夏令时间晚上8:30

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

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

我想做的是从这个字符串中提取一个TimeZone对象.在JVM中的默认时区,这个应用程序在运行是GMT,所以我不能使用.getTimezoneOffset()Date上述分析(因为它会返回默认时区).

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

在Java API中有一点让我感到Date困惑Calendar的是,Calendar它应该Date在所有地方取代......但是他们决定,哦,嘿,让我们仍然DateDateFormat课堂上使用.

Mit*_*ers 0

作为部分解决方案,您可以使用正则表达式匹配来获取时区,因为在它之前总是有相同的文本。上午或下午。

我对 Java 时区了解不够,无法让您了解最后一部分。