我有一个要求,我需要从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
答案 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
。