Java 时区转换为“;EDT“;在爪哇
我需要得到“EDT”时区的当前时间。我得到了当前时间并将其格式化为“EDT”,我得到了我想要的时间。但当我试图将其解析为“EDT”时区中的日期时,在解析为日期之后,我仍然以“IST”格式获取时间。我不知道我做错了什么Java 时区转换为“;EDT“;在爪哇,java,parsing,timezone,Java,Parsing,Timezone,我需要得到“EDT”时区的当前时间。我得到了当前时间并将其格式化为“EDT”,我得到了我想要的时间。但当我试图将其解析为“EDT”时区中的日期时,在解析为日期之后,我仍然以“IST”格式获取时间。我不知道我做错了什么 Date date = new Date(); String format = "MM/dd/yyyy hh:mm:ss Z"; DateFormat formatter = new SimpleDateFormat(format); formatter.setTimeZo
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类非常麻烦。避开它们。取而代之的是使用Java8中的Joda-Time或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上使用其他格式。EDT不是时区。它是东部时区的一部分,但在一年的大部分时间里都不生效。男人的问题是你仍然打印出Date.toString
,它总是使用系统默认时区。Date
值没有时区。Calendar实例=Calendar.getInstance(TimeZone.getTimeZone(“美国/纽约”);System.out.println(instance.getTimeZone());System.out.println(instance.getTime());输出:东部标准时间Mon Jul 01 18:02:10 IST 2013结果“东部标准时间”是时区的结果。我前面的评论解释了IST部分。