Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 时区转换为“;EDT“;在爪哇_Java_Parsing_Timezone - Fatal编程技术网

Java 时区转换为“;EDT“;在爪哇

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

我需要得到“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类非常麻烦。避开它们。取而代之的是使用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部分。