Convert String date to XMLGregorianCalendar (#15756)

Co-authored-by: rajatgarg <rajatgarg@adobe.com>
This commit is contained in:
Rajat Garg 2024-01-30 00:06:37 +05:30 committed by GitHub
parent a108e81950
commit 5eae4e7df8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 105 additions and 0 deletions

View File

@ -0,0 +1,42 @@
package com.baeldung.stringdatetoxmlgregoriancalendar;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.Date;
import java.util.GregorianCalendar;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
public class StringDateToXMLGregorianCalendarConverter {
public static XMLGregorianCalendar usingDatatypeFactoryForDate(String dateAsString) throws DatatypeConfigurationException {
return DatatypeFactory.newInstance().newXMLGregorianCalendar(dateAsString);
}
public static XMLGregorianCalendar usingLocalDate(String dateAsString) throws DatatypeConfigurationException {
LocalDate localDate = LocalDate.parse(dateAsString);
return DatatypeFactory.newInstance().newXMLGregorianCalendar(localDate.toString());
}
public static XMLGregorianCalendar usingSimpleDateFormat(String dateTimeAsString) throws DatatypeConfigurationException, ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
Date date = simpleDateFormat.parse(dateTimeAsString);
return DatatypeFactory.newInstance().newXMLGregorianCalendar(simpleDateFormat.format(date));
}
public static XMLGregorianCalendar usingGregorianCalendar(String dateTimeAsString) throws DatatypeConfigurationException, ParseException {
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").parse(dateTimeAsString));
return DatatypeFactory.newInstance().newXMLGregorianCalendar(calendar);
}
public static XMLGregorianCalendar usingJodaTime(String dateTimeAsString) throws DatatypeConfigurationException {
DateTime dateTime = DateTime.parse(dateTimeAsString, DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss"));
return DatatypeFactory.newInstance().newXMLGregorianCalendar(dateTime.toGregorianCalendar());
}
}

View File

@ -0,0 +1,63 @@
package com.baeldung.stringdatetoxmlgregoriancalendar;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.text.ParseException;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.XMLGregorianCalendar;
import org.junit.jupiter.api.Test;
public class StringDateToXMLGregorianCalendarConverterUnitTest {
private static final String dateAsString = "2014-04-24";
private static final String dateTimeAsString = "2014-04-24T15:45:30";
@Test
void givenStringDate_whenUsingDatatypeFactory_thenConvertToXMLGregorianCalendar() throws DatatypeConfigurationException {
XMLGregorianCalendar xmlGregorianCalendar = StringDateToXMLGregorianCalendarConverter.usingDatatypeFactoryForDate(dateAsString);
assertEquals(24,xmlGregorianCalendar.getDay());
assertEquals(4,xmlGregorianCalendar.getMonth());
assertEquals(2014,xmlGregorianCalendar.getYear());
}
@Test
void givenStringDateTime_whenUsingApacheCommonsLang3_thenConvertToXMLGregorianCalendar() throws DatatypeConfigurationException {
XMLGregorianCalendar xmlGregorianCalendar = StringDateToXMLGregorianCalendarConverter.usingLocalDate(dateAsString);
assertEquals(24,xmlGregorianCalendar.getDay());
assertEquals(4,xmlGregorianCalendar.getMonth());
assertEquals(2014,xmlGregorianCalendar.getYear());
}
@Test
void givenStringDateTime_whenUsingSimpleDateFormat_thenConvertToXMLGregorianCalendar() throws DatatypeConfigurationException, ParseException {
XMLGregorianCalendar xmlGregorianCalendar = StringDateToXMLGregorianCalendarConverter.usingSimpleDateFormat(dateTimeAsString);
assertEquals(24,xmlGregorianCalendar.getDay());
assertEquals(4,xmlGregorianCalendar.getMonth());
assertEquals(2014,xmlGregorianCalendar.getYear());
assertEquals(15,xmlGregorianCalendar.getHour());
assertEquals(45,xmlGregorianCalendar.getMinute());
assertEquals(30,xmlGregorianCalendar.getSecond());
}
@Test
void givenStringDateTime_whenUsingGregorianCalendar_thenConvertToXMLGregorianCalendar() throws DatatypeConfigurationException, ParseException {
XMLGregorianCalendar xmlGregorianCalendar = StringDateToXMLGregorianCalendarConverter.usingGregorianCalendar(dateTimeAsString);
assertEquals(24,xmlGregorianCalendar.getDay());
assertEquals(4,xmlGregorianCalendar.getMonth());
assertEquals(2014,xmlGregorianCalendar.getYear());
assertEquals(15,xmlGregorianCalendar.getHour());
assertEquals(45,xmlGregorianCalendar.getMinute());
assertEquals(30,xmlGregorianCalendar.getSecond());
}
@Test
void givenStringDateTime_whenUsingJodaTime_thenConvertToXMLGregorianCalendar() throws DatatypeConfigurationException {
XMLGregorianCalendar xmlGregorianCalendar = StringDateToXMLGregorianCalendarConverter.usingJodaTime(dateTimeAsString);
assertEquals(24,xmlGregorianCalendar.getDay());
assertEquals(4,xmlGregorianCalendar.getMonth());
assertEquals(2014,xmlGregorianCalendar.getYear());
assertEquals(15,xmlGregorianCalendar.getHour());
assertEquals(45,xmlGregorianCalendar.getMinute());
assertEquals(30,xmlGregorianCalendar.getSecond());
}
}