在DateTime
对象中编码时区信息非常简单:
final DateTimeFormatter formatterWithZone = DateTimeFormat.forPattern("MMMM dd, yyyy, HH:mm ZZZ").withOffsetParsed();
final DateTimeFormatter formatterWithoutZone = DateTimeFormat.forPattern("MMMM dd, yyyy, HH:mm");
final DateTime dateTimeExplicitZone = formatterWithZone.parseDateTime("April 26, 2016, 11:11 PST8PDT");
final DateTime dateTimeImplicitZone = formatterWithoutZone.parseDateTime("April 26, 2016, 11:11");
System.out.println(dateTimeExplicitZone);
System.out.println(dateTimeExplicitZone.getZone());
System.out.println(dateTimeImplicitZone);
System.out.println(dateTimeImplicitZone.getZone());
// 2016-04-26T11:11:00.000-07:00
// PST8PDT
// 2016-04-26T11:11:00.000-04:00
// America/New_York
但是,我希望能够判断时区是否明确地在下游进行了解析。
例如,如果解析没有时区,我想采取特定的措施来确保通过其他方式手动设置时区。
我的解决方法是创建两个解析器:一个用于带时区的格式字符串,另一个用于没有字符串的字符串,但这有点不太优雅。
如果时区通过解析或方法调用显式设置,而不是从JVM本地时间推断出来,是否有办法告诉使用JodaTime API?