Java 8 LocalDateTime到日期丢失时区

Java 8 LocalDateTime到日期丢失时区,java,date,timezone,Java,Date,Timezone,我有这个代码,我的系统的默认时区是PDT。时区转换后,finalDate以PDT显示时间。我如何让它在“亚洲/新加坡”中显示最终结果 对象不是特定于特定时区的。然而,它的方法适用于JVM当前的默认时区 您可以要求它打印特定时区的时间,例如 大概 SimpleDateFormat dateFormat = new SimpleDateFormat("hhhhMMddHHmm"); dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/S

我有这个代码,我的系统的默认时区是PDT。时区转换后,finalDate以PDT显示时间。我如何让它在“亚洲/新加坡”中显示最终结果

对象不是特定于特定时区的。然而,它的方法适用于JVM当前的默认时区

您可以要求它打印特定时区的时间,例如

大概

    SimpleDateFormat dateFormat = new SimpleDateFormat("hhhhMMddHHmm");
    dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Singapore"));
    System.out.println(dateFormat.format(finalDate));

java.time框架工作得非常好。问题在于您对
java.util.Date
的工作原理存在误解。请参阅Codebender提供的。为了向其他读者澄清,请尽量避免使用旧的java.util.Date和.Calendar类。time类取代了那些旧的麻烦类。在这个问题的代码中,没有必要将最后一行从java.time转换为java.util.Date,除非需要与其他一些还不知道新java.time类型的代码进行互操作。
    SimpleDateFormat dateFormat = new SimpleDateFormat("hhhhMMddHHmm");
    dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Singapore"));
    System.out.println(dateFormat.format(finalDate));