将时间从BST转换为美国时区CST MST EST PST

时间:2017-05-24 09:08:37

标签: java java-ee liferay

我正在将时间从GMT转换到不同的美国时区。为此,我写了一个返回1小时前一个时间的方法。如果时间是2点钟,它将返回1点钟

 a = "Hello world!"
 listresp = list(map(list, a))
 listff =[]
 print (listresp)
 for charersp in listresp:
     for charfinnal in charersp:
         listff.append(charfinnal)
 print (listff)


 ['H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!']

有人可以帮我解决究竟是什么问题,因为几个月前同样的方法工作正常吗?这是因为夏令时吗?

2 个答案:

答案 0 :(得分:0)

这可以使用java.time API以更简单的方式完成。使用Instant表示UTC时间。它可以在任何区域转换为时间,并格式化为特定模式。

DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
Instant now = Instant.now();
ZonedDateTime dt = now.atZone(ZoneId.of("UTC-05:00"));
System.out.println(dt.format(format)); //2017-05-24 04:51:03
ZonedDateTime pstDate = now.atZone(ZoneId.of("UTC-07:00"));
System.out.println(pstDate.format(format)); //2017-05-24 02:51:03

答案 1 :(得分:0)

经过如此多的挖掘后,我发现TimeZone不会根据时区给出正确的结果

  

(EST,CST,MST,PST)

所以在我的方法中,我作为timeZone传递的参数是

  

(EST,CST,MST,PST)

而不是EST, CST, MST, PST我已通过US/Eastern US/Pacific US/Mountain US/Central,而且它对我来说很好用