在 Java 中将时区转换为"EDT"



我需要获取"EDT"时区中的当前时间。我得到了当前时间并将其格式化为"EDT",我得到了我想要的时间。但当我试图将其解析为"EDT"时区中的日期时,在解析为日期后,我仍然得到了"IST"格式的时间。我不知道我做错了什么。

Date date = new Date(); 
String format = "MM/dd/yyyy hh:mm:ss Z";
DateFormat formatter = new SimpleDateFormat(format);
formatter.setTimeZone(TimeZone.getTimeZone("America/New_York"));
String dateString = formatter.format(date);
System.out.println(dateString);
try {       System.out.println(formatter.parse(dateString));
}     
catch (ParseException e) {
    e.printStackTrace();
}

java.util.Date和.Calendar类是出了名的麻烦。避开他们。相反,使用JodaTime或Java8中的java.Time包(灵感来自JodaTime)。

与java.util.Date不同,Joda Time中的DateTime知道自己指定的时区。如果您没有指定时区,JVM的默认时区将被分配。

您可以根据需要转换到java.util.Date对象或从其转换,以便与其他类一起使用。

java.util.Date date = new Date();
DateTimeZone timeZone = DateTimeZone.forID( "America/New_York" );
DateTime dateTimeNewYork = new DateTime( date, timeZone );
DateTime dateTimeIndia = dateTimeNewYork.withZone( DateTimeZone.forID( "Asia/Kolkata" ) );
DateTime dateTimeUtc = dateTimeNewYork.withZone( DateTimeZone.UTC );

对这些DateTime对象调用toString方法,以查看它们自己的时区,该时区用于使用合理的ISO8601标准格式生成String。您也可以在Joda Time上使用其他格式。

相关内容

  • 没有找到相关文章

最新更新