在有人反对这个问题之前,我已经浏览了网络和 StackOverflow 以了解我所面临的情况并且没有找到任何东西,因此我将其作为一个新问题发布。
我有 java 日期和时区的情况。
情况:
在 2 个不同的时区有 2 台服务器,比如说 PST 和 CST。我从这些服务器接收 dateString(date as a string)。但是,当我尝试使用 SimpleDateFormat 将字符串转换回日期时,日期信息(年、月、日、小时、分钟、秒)正在正确转换。但是时区信息没有被保留。
如果我在 EST 的服务器上运行我的代码,pstDateString 将转换为日期格式,但时区设置为 EDT,而不是 PST。
我以许多不同的方式考虑过它,但可能是我压力很大,我无法找到解决方案。有什么帮助吗?
模拟这种情况的代码块:
DateFormat outDF1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS");
outDF1.setTimeZone(TimeZone.getTimeZone("PST"));
String pstDateString = outDF1.format(new Date());
DateFormat outDF2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS");
outDF2.setTimeZone(TimeZone.getTimeZone("CST"));
String cstDateString = outDF2.format(new Date());
System.out.println("pstDateString "+pstDateString);
System.out.println("cstDateString "+cstDateString);
Date cstDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS").parse(cstDateString);
Date pstDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS").parse(pstDateString);
System.out.println("Date after format from string: "+pstDate);
System.out.println("Date after format from string: "+cstDate);
当前输出:
pstDateString 2012-06-07 10:26:689
cstDateString 2012-06-07 12:26:694
Date after format from string: Thu Jun 07 10:26:00 EDT 2012
Date after format from string: Thu Jun 07 12:26:00 EDT 2012
预期输出:
pstDateString 2012-06-07 10:26:689
cstDateString 2012-06-07 12:26:694
Date after format from string: Thu Jun 07 10:26:00 PST 2012
Date after format from string: Thu Jun 07 12:26:00 CST 2012