我有一个数据库字段,其中包含一个原始日期字段(存储为字符数据),如
2008年9月26日星期五东部夏令时间晚上8:30
我可以使用SimpleDateFormat轻松地将其解析为Date
DateFormat dbFormatter = new SimpleDateFormat("EEEE, MMMM dd, yyyy hh:mm aa zzzz"); Date scheduledDate = dbFormatter.parse(rawDate);
我想做的是从这个字符串中提取一个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
在所有地方取代......但是他们决定,哦,嘿,让我们仍然Date
在DateFormat
课堂上使用.