Java 分析时区中的日期时间

Java 分析时区中的日期时间,java,java-8,java-time,Java,Java 8,Java Time,我有一个从洛杉矶来的约会时间。夏时制在可能的情况下适用。我试图将日期时间转换为时间戳,但我似乎不理解Java8DateTime API。以下代码段返回1238112000(如果以UTC指定,则该日期是正确的)。我应该更改什么以显示1238137200 String date = "March 27, 2009 00:00:00"; DateTimeFormatter formatter = DateTimeFormatter. ofPat

我有一个从洛杉矶来的约会时间。夏时制在可能的情况下适用。我试图将日期时间转换为时间戳,但我似乎不理解Java8DateTime API。以下代码段返回
1238112000
(如果以UTC指定,则该日期是正确的)。我应该更改什么以显示
1238137200

String date = "March 27, 2009 00:00:00";
DateTimeFormatter formatter = DateTimeFormatter.
                             ofPattern("MMMM dd, yyyy HH:mm:ss", Locale.ENGLISH).
                             withZone(ZoneId.of("America/Los_Angeles"));
LocalDateTime.parse(date, formatter).toEpochSecond(ZoneOffset.UTC))

通过将日期解析为
LocalDateTime
,您将忽略格式化程序中的时区信息。您应该使用:


在返回的实例上,您可以调用。

@1.8.0_74。你把所有的密码都拿走了吗?您不应该有这个错误,Eclipse实际上运行的是1.8.0_05。可能是吃剩的虫子。
public static void main(String[] args) {
    String date = "March 27, 2009 00:00:00";
    DateTimeFormatter formatter =
        DateTimeFormatter.ofPattern("MMMM dd, yyyy HH:mm:ss", Locale.ENGLISH)
                         .withZone(ZoneId.of("America/Los_Angeles"));
    long second = ZonedDateTime.parse(date, formatter).toEpochSecond();
    System.out.println(second); // prints "1238137200"
}