我可以在DateTimeFormatter上更多地控制区域偏移格式

car*_*eld 6 java datetime-format

目前我们正在使用

DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX")
Run Code Online (Sandbox Code Playgroud)

要为一系列数据格式化外部供应商的时间范围,对于印度,该格式化程序将给出如下时间:

2018-04-26T00:00:00.000 + 0530

但是,我的供应商说他们不能接受这种格式,它必须看起来像

2018-04-26T00:00:00.000 + 05:30

但是,看起来像DateTimeFormatter,无论我选择Z/z/X/x,我都没有得到那种格式的偏移.只是想知道一种将偏移定制为HH的方法:mm?

或者,我需要在第二个时间获得偏移并且我们自己工作吗?

Dav*_*zer 6

它是三个x.刚尝试使用JavaRepl:

java.time.format.DateTimeFormatter
    .ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSxxx")
    .withZone(java.time.ZoneId.systemDefault())
    .format(java.time.Instant.now())
Run Code Online (Sandbox Code Playgroud)

结果是

java.lang.String res10 = "2018-04-27T11:06:50.648+00:00"
Run Code Online (Sandbox Code Playgroud)

经过一些试验和错误后,我看到这也在API文档中有记录DateTimeFormatter但是很难找到(埋没在很多其他文本中):

三个字母输出小时和分钟,带冒号,例如'+01:30'

DateTimeFormatter API文档