使用以下代码,每个时区都正确打印除BST
import java.text.*;
def format = "yyyy-MM-dd HH:mm:ssXXX"
def dt = new Date();
println dt;
SimpleDateFormat utcFormat = new SimpleDateFormat(format)
utcFormat.setTimeZone(TimeZone.getTimeZone("UTC"))
println utcFormat.format(dt)
SimpleDateFormat istFormat = new SimpleDateFormat(format)
istFormat .setTimeZone(TimeZone.getTimeZone("IST"))
println istFormat.format(dt)
SimpleDateFormat cetFormat = new SimpleDateFormat(format)
cetFormat.setTimeZone(TimeZone.getTimeZone("CET"))
println cetFormat.format(dt)
SimpleDateFormat bstFormat = new SimpleDateFormat(format)
bstFormat.setTimeZone(TimeZone.getTimeZone("BST"))
println bstFormat.format(dt)
的输出:
Mon Mar 26 09:04:14 UTC 2018
2018-03-26 09:04:14Z
2018-03-26 14:34:14 + 05:30
2018-03-26 11:04:14 + 02:00
2018-03-26 15:04:14 + 06:00
这里BST
时间错了。这有什么不对吗?
答案 0 :(得分:1)
您似乎期望BST成为英国夏令时,但在这种情况下,它代表Bangladesh Standard Time。 另请参阅What does Java's BST ZoneId represent?
来自答案:
以下代码有效
SimpleDateFormat bstFormat = new SimpleDateFormat(format)
bstFormat.setTimeZone(TimeZone.getTimeZone("Europe/London"))
println bstFormat.format(dt)
答案 1 :(得分:1)
我运行了你的代码,发现BST的时间恰到好处。在UTC时间09:04:14添加6小时的偏移量给出了15:04:14。我认为你与时区的首字母缩略词混淆了。
如果JVM中的时区数据库不正确,您可以按TimeZone.getTimeZone("Europe/London");