Java Intellij IDEA中的时区转换问题

Java Intellij IDEA中的时区转换问题,java,eclipse,intellij-idea,Java,Eclipse,Intellij Idea,我试图在intellij IDEA中将时区从EST转换为IST,所以转换后我得到10小时30分钟的时差,但当我在eclipse上运行相同的程序时,我得到9小时30分钟的时差,这是正确的,关于时差,你可以在谷歌上查看 请参考以下代码 SimpleDataFormat SimpleDataFormat=新的SimpleDataFormat(“yyyy-MM-dd-HH:MM:ss”); SimpleDataFormat.setTimeZone(TimeZone.getTimeZone(“EST”);

我试图在intellij IDEA中将时区从EST转换为IST,所以转换后我得到10小时30分钟的时差,但当我在eclipse上运行相同的程序时,我得到9小时30分钟的时差,这是正确的,关于时差,你可以在谷歌上查看

请参考以下代码

SimpleDataFormat SimpleDataFormat=新的SimpleDataFormat(“yyyy-MM-dd-HH:MM:ss”);
SimpleDataFormat.setTimeZone(TimeZone.getTimeZone(“EST”);
Date dateValue=simpleDateFormat.parse(“2015-09-15 05:00:00.000东部标准时间”);
System.out.println(日期值);
输出:

正确值-2015年9月15日星期二14:30:00 IST
错误值-2015年9月15日星期二15:30:00 IST

请说明这背后的原因

我怀疑您实际上想要东部时间的时区,例如美国/纽约。毕竟,东部时间并没有在9月15日观测东部时间,而是在观测东部时间(至少,在观测夏时制的任何地方,就我所知,东部时间的大部分时间都在观测夏时制)

这给出了2015-09-15 09:00:00的输出,表明美国/纽约目前确实落后UTC 4小时(因此落后印度9.5小时)


现在假设您知道您真的希望它在东部时间-这就是为什么我从您正在解析的字符串中删除了“EST”后缀。如果您真的想从字符串中获取值,那么需要非常小心,因为这些缩写是不明确的,在这种情况下,显然是误用了。

您希望“EST”到底是什么意思?(这不是一个时区——它是一个缩写,一半时间用于东部时间。)你得到了什么结果?基本上,我们需要知道您期望“EST”是指“东部时间”(目前为UTC-4)还是“东部标准时间”(UTC-5)。嗨,Jon,我添加了输出是的,但您尚未澄清您期望“EST”的含义。我怀疑您在这两个IDE中使用了两个不同版本的Java,他们对这一点的处理方式也不同。基本上,使用缩写而不是时区ID是一个非常糟糕的主意。而且您没有在日期格式中定义任何时区或偏移部分。因此,您的程序需要给定的输入字符串,如EST中所示。非常有帮助-谢谢Jon:)
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("America/New_York"));
Date dateValue = simpleDateFormat.parse("2015-09-15 05:00:00.000");
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println(simpleDateFormat.format(dateValue));