Calendar result = new GregorianCalendar(); result.setTime(java.util.Date.class.cast(srcObj)); } else if (Calendar.class.isAssignableFrom(sourceClass)) { result.setTime(c.getTime()); result.setTimeZone(c.getTimeZone()); } else if (XMLGregorianCalendar.class.isAssignableFrom(sourceClass)) { result = XMLGregorianCalendar.class.cast(srcObj).toGregorianCalendar(); } else if (dateFormat != null && String.class.isAssignableFrom(sourceClass)) { if ("".equals(String.class.cast(srcObj))) { long time = dateFormat.parse(String.class.cast(srcObj)).getTime(); result.setTime(new Date(time)); } catch (ParseException e) { throw new ConversionException("Unable to parse source object using specified date format", e); try { long time = Long.parseLong(srcObj.toString()); result.setTime(new Date(time)); } catch (NumberFormatException e) { throw new ConversionException("Unable to determine time in millis of source object", e); return dataTypeFactory().newXMLGregorianCalendar(GregorianCalendar.class.cast(result));
/** * <p>Returns a <code>String</code> representation of this <code>XMLGregorianCalendar</code> <code>Object</code>.</p> * * <p>The result is a lexical representation generated by {@link #toXMLFormat()}.</p> * * @return A non-<code>null</code> valid <code>String</code> representation of this <code>XMLGregorianCalendar</code>. * * @throws IllegalStateException if the combination of set fields * does not match one of the eight defined XML Schema builtin date/time datatypes. * * @see #toXMLFormat() */ public String toString() { return toXMLFormat(); }
/** * <p>Returns a hash code consistent with the definition of the equals method.</p> * * @return hash code of this object. */ public int hashCode() { // Following two dates compare to EQUALS since in different timezones. // 2000-01-15T12:00:00-05:00 == 2000-01-15T13:00:00-04:00 // // Must ensure both instances generate same hashcode by normalizing // this to UTC timezone. int timezone = getTimezone(); if (timezone == DatatypeConstants.FIELD_UNDEFINED) { timezone = 0; } XMLGregorianCalendar gc = this; if (timezone != 0) { gc = this.normalize(); } return gc.getYear() + gc.getMonth() + gc.getDay() + gc.getHour() + gc.getMinute() + gc.getSecond(); }
printNumber(buf,value.getEonAndYear(), 4); break; case 'M': printNumber(buf,value.getMonth(),2); break; case 'D': printNumber(buf,value.getDay(),2); break; case 'h': printNumber(buf,value.getHour(),2); break; case 'm': printNumber(buf,value.getMinute(),2); break; case 's': printNumber(buf,value.getSecond(),2); if (value.getFractionalSecond() != null) { String frac = value.getFractionalSecond().toPlainString(); int offset = value.getTimezone(); if(offset == 0) { buf.append('Z');
if (Calendar.class.isAssignableFrom(srcFieldClass)) { Calendar inVal = (Calendar)srcObj; time = inVal.getTime().getTime(); } else if (Timestamp.class.isAssignableFrom(srcFieldClass)) { Timestamp timestamp = (Timestamp)srcObj; nanos = timestamp.getNanos(); } else if (java.util.Date.class.isAssignableFrom(srcFieldClass)) { time = ((java.util.Date)srcObj).getTime(); } else if (XMLGregorianCalendar.class.isAssignableFrom(srcFieldClass)) { time = ((XMLGregorianCalendar)srcObj).toGregorianCalendar().getTimeInMillis(); } else if (dateFormat != null && String.class.isAssignableFrom(srcObj.getClass())) { try { return null; time = dateFormat.parse((String)srcObj).getTime(); } catch (ParseException e) { throw new ConversionException("Unable to parse source object using specified date format", e); Constructor constructor = destClass.getConstructor(); Calendar result = (Calendar)constructor.newInstance(); result.setTimeInMillis(time); return result;
String s = "1582-10-05"; DatatypeFactory datatypeFactory = DatatypeFactory.newInstance(); GregorianCalendar xml = datatypeFactory.newXMLGregorianCalendar(s).toGregorianCalendar(); GregorianCalendar proleptic = new GregorianCalendar(); proleptic.clear(); // very important for proper comparison to reset time part to zero proleptic.setGregorianChange(new Date(Long.MIN_VALUE)); proleptic.set(Calendar.DAY_OF_MONTH, 5); proleptic.set(Calendar.MONTH, Calendar.OCTOBER); proleptic.set(Calendar.YEAR, 1582); boolean isEqual = (xml.getTimeInMillis() == proleptic.getTimeInMillis()); System.out.println("XML-millisSinceEpoch: " + xml.getTimeInMillis()); System.out.println("Proleptic-millisSinceEpoch: " + proleptic.getTimeInMillis()); System.out.println("XML==Proleptic (1582-10-05): " + isEqual); System.out.println( "proleptic [DAY_OF_MONTH [" + proleptic.get(Calendar.DAY_OF_MONTH) + "], MONTH [" + proleptic.get(Calendar.MONTH) + "], YEAR [" + proleptic.get(Calendar.YEAR) + "]" ); System.out.println("Date.toString() [" + proleptic.getTime() + "]");
try { DatatypeFactory df = javax.xml.datatype.DatatypeFactory.newInstance(); XMLGregorianCalendar xmlGregCal = df.newXMLGregorianCalendar(time); GregorianCalendar gregCal = xmlGregCal.toGregorianCalendar(); if (xmlGregCal.getTimezone() == DatatypeConstants.FIELD_UNDEFINED) { gregCal.setTimeZone(tz); Date d2 = gregCal.getTime(); request.setDateTime(d2); } catch (DatatypeConfigurationException e) { boolean tripPlannedForNow = Math.abs(request.getDateTime().getTime() - new Date().getTime()) < NOW_THRESHOLD_MILLIS;
private String stringFromSQLTime(Time sourceTime) { XMLGregorianCalendar xgc = getDatatypeFactory().newXMLGregorianCalendar(); GregorianCalendar cal = new GregorianCalendar(getTimeZone()); cal.setGregorianChange(new Date(Long.MIN_VALUE)); cal.setTime(sourceTime); xgc.setHour(cal.get(Calendar.HOUR_OF_DAY)); xgc.setMinute(cal.get(Calendar.MINUTE)); xgc.setSecond(cal.get(Calendar.SECOND)); String string= xgc.toXMLFormat(); return appendTimeZone(string); }
public class TestMain { public static void main(String[] args) throws DatatypeConfigurationException{ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); GregorianCalendar gc = new GregorianCalendar(); gc.setTime(new Date()); XMLGregorianCalendar xmlGregorianCalendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(gc); Timestamp timeStamp = new Timestamp(System.currentTimeMillis()); String sqlTimestamp = dateFormat.format(timeStamp); Timestamp xmlToSqlTimestamp = new Timestamp(xmlGregorianCalendar.toGregorianCalendar().getTimeInMillis()); String xmlTimestamp = dateFormat.format(xmlToSqlTimestamp); System.out.println(timeStamp+" : "+xmlGregorianCalendar); System.out.println(sqlTimestamp+" : "+xmlTimestamp); System.out.println("Time stamps are equal : "+sqlTimestamp.equalsIgnoreCase(xmlTimestamp)); } }
public void testDateToXMLGregorianCalendar() throws Exception { Date date = new Date(); assertNotNull(factory.createConverter(Date.class, XMLGregorianCalendar.class, null)); XMLGregorianCalendar gc = factory.createConverter(Date.class, XMLGregorianCalendar.class, null) .convert(date, XMLGregorianCalendar.class); assertNotNull(gc); assertEquals(date, gc.toGregorianCalendar().getTime()); }
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss", Locale.ENGLISH); XMLGregorianCalendar xmlGregorianCalendar = retrieveXMLGregorianCalendar(new Date()); Date date = xmlGregorianCalendar.toGregorianCalendar().getTime(); System.out.println(dateFormat.format(date));
javax.xml.datatype.DatatypeFactory.newInstance().newXMLGregorianCalendar("2011-01-01Z").toGregorianCalendar().getTime()
public Object convert(MappingContext<Object, Object> context) { Object source = context.getSource(); if (source == null) return null; Class<?> destinationType = context.getDestinationType(); if (!Calendar.class.isAssignableFrom(destinationType) && !destinationType.equals(XMLGregorianCalendar.class)) throw new Errors().errorMapping(source, destinationType).toMappingException(); GregorianCalendar calendar = new GregorianCalendar(); if (source instanceof Date) calendar.setTimeInMillis(((Date) source).getTime()); else if (source instanceof Calendar) { Calendar cal = (Calendar) source; calendar.setTimeZone(cal.getTimeZone()); calendar.setTimeInMillis(cal.getTime().getTime()); } else if (source instanceof XMLGregorianCalendar) { XMLGregorianCalendar xmlCal = (XMLGregorianCalendar) source; GregorianCalendar cal = xmlCal.toGregorianCalendar(); calendar.setTimeZone(cal.getTimeZone()); calendar.setTimeInMillis(cal.getTime().getTime()); } else if (source instanceof Long) calendar.setTimeInMillis(((Long) source).longValue()); return destinationType.equals(XMLGregorianCalendar.class) ? getDataTypeFactory().newXMLGregorianCalendar( calendar) : calendar; }
public static String prettyPrintForReport(XMLGregorianCalendar dateTime) { if (dateTime == null) { return ""; } SimpleDateFormat formatDate = new SimpleDateFormat(); return formatDate.format(new Date(dateTime.toGregorianCalendar().getTimeInMillis())); }
@Test public void testCalendarToXmlGregorianCalendarConverter() { MapperFactory factory = MappingUtil.getMapperFactory(); factory.getConverterFactory().registerConverter(new CalendarToXmlGregorianCalendarConverter()); MapperFacade mapper = factory.getMapperFacade(); Calendar cal = Calendar.getInstance(); XMLGregorianCalendar xml = mapper.map(cal, XMLGregorianCalendar.class); Assert.assertEquals(cal.getTime(), xml.toGregorianCalendar().getTime()); Calendar reverse = mapper.map(xml, Calendar.class); Assert.assertEquals(cal, reverse); }
calendar = ((XMLGregorianCalendar) object).toGregorianCalendar(); } else { calendar = (Calendar) object; out.append(quote); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1; int day = calendar.get(Calendar.DAY_OF_MONTH); int hour = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE); int timeZone = calendar.getTimeZone().getOffset(calendar.getTimeInMillis()) / (3600 * 1000); if (timeZone == 0) { out.append("Z");
@Test public void testDateTime4() { Calendar cal1 = new GregorianCalendar(); cal1.setTimeZone(TimeZone.getTimeZone("GMT")); // Clear/ set all fields (milliseconds included). cal1.setTimeInMillis(0); cal1.set(2005, 01, 18, 20, 39, 10); // NB Months from 0, not 1 NodeValue v = NodeValue.makeNode("2005-02-18T20:39:10Z", XSDDatatype.XSDdateTime); assertTrue("Not a dateTime: " + v, v.isDateTime()); assertFalse("A date: " + v, v.isDate()); assertTrue("Not a node: " + v, v.hasNode()); Calendar cal2 = v.getDateTime().toGregorianCalendar(); assertEquals("Not equal: " + v, 0, cal1.compareTo(cal2)); }
public String convertToString(Object value) { if (value == null) { return null; } else { return Long.toString(((XMLGregorianCalendar)value).toGregorianCalendar().getTime().getTime()); } }
public Number convert(MappingContext<Object, Number> context) { Object source = context.getSource(); if (source == null) return null; Class<?> destinationType = Primitives.wrapperFor(context.getDestinationType()); if (source instanceof Number) return numberFor((Number) source, destinationType); if (source instanceof Boolean) return numberFor(((Boolean) source).booleanValue() ? 1 : 0, destinationType); if (source instanceof Date && Long.class.equals(destinationType)) return Long.valueOf(((Date) source).getTime()); if (source instanceof Calendar && Long.class.equals(destinationType)) return Long.valueOf(((Calendar) source).getTime().getTime()); if (source instanceof XMLGregorianCalendar && Long.class.equals(destinationType)) return ((XMLGregorianCalendar) source).toGregorianCalendar().getTimeInMillis(); return numberFor(source.toString(), destinationType); }
XMLGregorianCalendar xmlStartTime = DatatypeFactory.newInstance() .newXMLGregorianCalendar( ((GregorianCalendar)GregorianCalendar.getInstance()); xmlStartTime.setTimezone(0); GregorianCalendar startCalendar = xmlStartTime.toGregorianCalendar(); Date startDate = startCalendar.getTime(); XMLGregorianCalendar xmlStartTime = DatatypeFactory.newInstance() .newXMLGregorianCalendar(startCalendar); xmlStartTime.setHour(startDate.getHours()); xmlStartTime.setDay(startDate.getDate()); xmlStartTime.setMinute(startDate.getMinutes()); xmlStartTime.setMonth(startDate.getMonth()+1); xmlStartTime.setTimezone(-startDate.getTimezoneOffset()); xmlStartTime.setSecond(startDate.getSeconds()); xmlStartTime.setYear(startDate.getYear() + 1900); System.out.println(xmlStartTime.toString());