我有各种java.util.Date具有这种格式值的对象:2014-01-21 10:28:57.122Z.我想将它们全部转换为ZonedDateTime对象.
根据该 SO问题,ZonedDateTime的ofInstant(),一种方式是像这样:
ZonedDateTime z = ZonedDateTime.ofInstant(dateObject.toInstant(), ZoneId);
Run Code Online (Sandbox Code Playgroud)
问题是,我如何找出ZoneId参数的用途?我不能使用我的系统时间(ZoneId.systemDefault())因为我的Date对象都有不同的时区.
你的java.util.Date对象并没有有一个时区.日期始终以UTC格式存储在内部.
将文本字符串解析为Date对象时,解析器会将时区(如文本中给出的)作为参数应用于解析器,或者默认情况下应用.
当您显示一个Date对象时,格式化程序将在请求的时区内生成所请求的文本,无论是否显示时区.
因此,在没有时区信息Date的对象,你必须指定转换,当你需要的时区ZonedDateTime.
更好的是,将文本直接解析为ZonedDateTime,以便它可以记住文本中的原始时区.
| 归档时间: |
|
| 查看次数: |
4088 次 |
| 最近记录: |