datetime转换java。util。自定义时区为UTC的日期
我有一个java.util.Date
对象。当我使用以下命令将其格式化为String
时:
String timeString = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss-Z").format(time);
我得到:
2020-03-26-14:40:55-+0200
所以,我有正确的时区(但我可以有任何时区,不仅仅是^{
我想将此日期转换为UTC,然后将其转换为String
。如果我向客户端发送带有日期的对象,那么Jackson
将自动将其转换为UTC
。但我想手动执行此操作
我该怎么做
# 1 楼答案
爪哇。时间
我知道您有一个类型为
java.util.Date
的字段,您现在无法更改。对于该Date
上的任何操作,您仍然应该首先将其转换为现代Instant
,然后从那里开始进一步的工作。要将其转换为UTC格式的字符串,可以使用非常简单的:输出示例:
虽然
Instant
是一个没有时区或偏移的时间点,就像Date
一样,Instant.toString()
以UTC格式生成ISO 8601格式的字符串,我觉得这很好。如果您想要问题中提到的特殊格式(您必须有非常特殊的原因):来自
SimpleDateFormat
的格式模式字符串也适用于现代DateTimeFormatter
。情况并非总是如此,两种格式的字母之间存在差异,只有许多字母具有相同或相似的含义我自己使用的是一个非常古老的代码库,多年来它已经获得了过时和现代日期和时间类的混乱混合。因此,我们不断地在
Date
、LocalDate
、OffsetDateTime
、XMLGregorianCalendar
和许多其他课程之间来回转换,这远不是理想的,而且还需要几年的时间才能达到只使用现代课程的最佳状态链接
# 2 楼答案
不再建议使用
java.util
进行日期-时间操作,尤其是时区或偏移量转换相反,使用
java.time
:提供以下输出