我有java时区的问题,如果有人可以帮助我.
我有一个在tomcat 5.5上运行的Web应用程序(不确定这是否相关),具有以下JVM版本
[someuser@webserver bin]$ java -version
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Server VM (build 1.5.0_06-b05, mixed mode)
[someuser@webserver bin]$
Run Code Online (Sandbox Code Playgroud)
系统日期是,比如说 -
[someuser@webserver bin]$ date
Mon Aug 15 09:09:46 EST 2011
Run Code Online (Sandbox Code Playgroud)
在Web应用程序中,我在某个Calendar.getInstance().getTime()时间点拨打电话,然后在日志中打印此时间戳.
问题是这个时间戳在EDT中返回,尽管服务器的时间在EST中.因此,返回的日期比它应该晚1小时.
我想要实现的是使得Calendar.getInstance().getTime()在与系统相同的时区中返回日期.
我搜索了论坛,并发现一些建议,即jvm无法正确读取系统的时区.我尝试使用-Duser.timezone=EST参数启动tomcat ,但系统会在EDT时区中保持返回时间戳.请注意 - 尝试-Duser.timezone使用非est参数似乎可行.这些问题似乎有所不同.
我的问题在某种程度上类似于这个问题.但是,我只是试图在系统所在的时区中获取日期,而没有任何特殊处理.
你能帮忙吗?
美国东部时间和美国东部时间非常具体,其中一个将总是"错误",取决于一年中的时间.尝试"America/New_York"的时区,简单地说"纽约时间到了什么时候".
例如
DateFormat formatterET = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss zzz");
formatterET.setTimeZone(TimeZone.getTimeZone("America/New_York"));
String timestamp = formatterET.format(new Date());
Run Code Online (Sandbox Code Playgroud)
有用的时区列表:
https://calendar.york.ac.uk/en/chcncpt.html#wp1056628