yyyy-MM-dd'T'HH:mm:ss'Z'和时间戳的转换?

时间戳1670037101000
如果我用yyyy-MM-dd'T'HH:mm:ss'Z'格式转换, 如果时区是UTC,那么得到结果2022-12-03T03:11:41Z, 如果时区是Asia/Shanghai,得到的时间是2022-12-03T03:11:41Z
转换代码如下:

     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");

// format.setTimeZone(TimeZone.getTimeZone(ZoneId.of("Asia/Shanghai")));

format.setTimeZone(TimeZone.getTimeZone(ZoneId.of("UTC")));

System.out.println(format.format(new Date(1670037101000L)));

1.这么转是对的吗?


回答:

'Z' 其实是 0时区,也就是UTC,如果用Asia/Shanghai就不应该用Z


回答:

把Z的单引号去掉,再试试。。
一般来说需要输出带时区的日期字符串,类似2006-10-07T12:06:56.568+01:00
pattern 一般可以写为:yyyy-MM-dd'T'HH:mm:ss.SSSZZZ
类似你的pattern,Z是作为字符串输出了
另外相同的时间戳,上海时间应该比utc +8,你那个结果应该也不对,但是和你的pattern没什么关系,看一下timezone的设置,ZoneId.SHORT_IDS.get("CTT")

以上是 yyyy-MM-dd'T'HH:mm:ss'Z'和时间戳的转换? 的全部内容, 来源链接: utcz.com/p/944872.html

回到顶部