我需要在“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();
}
答案 0 :(得分:0)
java.util.Date和.Calendar类非常麻烦。避免他们。而是使用Joda-Time或Java 8中的java.time包(受Joda-Time启发)。
与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
方法,以查看用于使用合理的ISO 8601标准格式生成字符串的自己的时区。您也可以在Joda-Time上使用其他格式。