XMLGregorianCalendarの使い方
JAX-WSの日付型を扱う場合、XMLGregorianCalendarで扱うことになります。
そのXMLGregorianCalendarに関して書こうとおもいます。
まずインスタンスの生成に方法です。
DatatypeFactoryクラスを利用してインスタンスを取得します。
DatatypeFactory factory = DatatypeFactory.newInstance(); XMLGregorianCalendar xmlGregorianCalendar = new factory.newXMLGregorianCalendar();
その後に、必要な情報を設定して行くことになります。
XMLGregorianCalendarのクラスフィールドには、年,月,日,時,分,秒,ミリ秒などのエリアがあります。
それぞれに対応したgeter,seterがあります。
それを使って値を取得したり、設定したりします。
Calendarから変換したりする場合は、こんな感じです。
Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1; int day = calendar.get(Calendar.DATE); int hour = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE); int second = calendar.get(Calendar.SECOND); int millisecond = calendar.get(Calendar.MILLISECOND); xmlGregorianCalendar.setYear(year); xmlGregorianCalendar.setMonth(month); xmlGregorianCalendar.setDay(day); xmlGregorianCalendar.setHour(hour); xmlGregorianCalendar.setMinute(minute); xmlGregorianCalendar.setSecond(second); xmlGregorianCalendar.setMillisecond(millisecond); xmlGregorianCalendar.setTimezone(540);
その逆の場合
Calendar calendar = Calendar.getInstance(); int year = xmlGregorianCalendar.getYear(); int month = xmlGregorianCalendar.getMonth(); int day = xmlGregorianCalendar.getDay(); int hour = xmlGregorianCalendar.getHour(); int minute = xmlGregorianCalendar.getMinute(); int second = xmlGregorianCalendar.getSecond(); int millisecond = xmlGregorianCalendar.getMillisecond(); calendar.set(year, month-1, day, hour, minute, second); calendar.set(Calendar.MILLISECOND, millisecond);