【问题标题】:Converting String to XMLGregorianCalender timezone offset in java在java中将String转换为XMLGregorianCalender时区偏移
【发布时间】:2022-06-17 04:27:12
【问题描述】:

我收到一个日期字符串和 zoneAdjustment。我能够将日期转换为公历,但我想知道如何设置我收到的自定义偏移量。 我收到: 字符串输入日期=“2022-05-19T20:21:11” 字符串偏移 = "-PT5H0M"; 我需要最终输出为“2020-05-19T20:21:11.000-05:00” 我需要将偏移量转换为 int 并使用它来设置时区。

public XMLGregorianCalendar getXmlGregorianCalender(String inputDate, int offset) {
    XMLGregorianCalendar xmlGregorianCalendar = null;

    try {
        Date date;
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
        date = simpleDateFormat.parse(inputDate);
        GregorianCalendar gregorianCalendar =
                (GregorianCalendar) GregorianCalendar.getInstance();
        gregorianCalendar.setTime(date);
        xmlGregorianCalendar =
                DatatypeFactory.newInstance().newXMLGregorianCalendar(gregorianCalendar);
        xmlGregorianCalendar.setTimezone(offset);
        //          xmlGregorianCalendar.setTimezone();


    } catch (Exception e) {
        LOGGER.error("Error parsing dates", e);
    }

    return xmlGregorianCalendar;
}

【问题讨论】:

    标签: java spring-boot


    【解决方案1】:

    我正在回答我自己的答案:

    public int stringToMinutes(String offset) {
        int totalMinute = 0;
        String hourString = offset.substring(offset.indexOf("T") + 1, offset.indexOf("H"));
        int hour = Integer.parseInt(hourString);
        String minuteString = offset.substring(offset.indexOf("H") + 1, offset.indexOf("M"));
        int minute = Integer.parseInt(minuteString);
        if (offset.contains("-")) {
            totalMinute = -((hour * 60) + minute);
        } else {
            totalMinute = ((hour * 60) + minute);
        }
        return totalMinute;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-29
      • 1970-01-01
      • 1970-01-01
      • 2021-10-16
      • 2020-06-17
      • 2012-08-02
      • 1970-01-01
      相关资源
      最近更新 更多