sap兼容ISO 8601时间戳的utc时区值

时间:2018-04-06 11:27:21

标签: java webmethods

我有一个要求,我需要从ISO 8601时间戳中提取SAP兼容的时区值,该时间戳也包含带冒号的utc值。我在webMethods工作,但java解决方案会有所帮助。 我正在寻找的结果样本是

UTC + 11 输入2018-03-27T01:02:43.745 + 11:00,

UTC + 103 输入2018-03-27T01:02:43.745 + 10:30,

UTC + 93 输入2018-03-27T01:02:43.745 + 09:30

1 个答案:

答案 0 :(得分:1)

    DateTimeFormatter offsetFormatter = DateTimeFormatter.ofPattern("ZZZ");
    OffsetDateTime dateTime = OffsetDateTime.parse("2018-03-27T01:02:43.745+11:00");
    String offsetString = offsetFormatter.format(dateTime);
    String sapOffsetString
            = offsetString.replaceFirst("^([+-])0?(\\d+?)0{0,2}$", "UTC$1$2");
    System.out.println(sapOffsetString);

此代码段输出

  

UTC + 11

我已经用您问题中的其他两个例子进行了测试。

ZZZ格式模式字符串将偏移量格式化为+1100之类的字符串。 replaceFirst操作删除一个前导零和最多两个尾随零,至少留下一个数字。并预先UTC。因此+0000变为UTC+0-0030变为UTC-03