code: public static String dateTime(GregorianCalendar gc) {
  		if(gc == null)return "";
  		TimeZone tz = gc.getTimeZone();
  		int tz1 = (tz.getRawOffset()+tz.getDSTSavings())/0x8CA0;
  		int tz1abs = Math.abs(tz1);
  		return String.format("%04d-%02d-%02dT%02d:%02d:%02d.%03d%c%02d:%02d", 
  				gc.get(GregorianCalendar.YEAR),
  				gc.get(GregorianCalendar.MONTH)+1,
  				gc.get(GregorianCalendar.DAY_OF_MONTH),
  				gc.get(GregorianCalendar.HOUR),
  				gc.get(GregorianCalendar.MINUTE),
  				gc.get(GregorianCalendar.SECOND),
  				gc.get(GregorianCalendar.MILLISECOND),
  				tz1==tz1abs?'+':'-',
  				tz1abs/100,
  				((tz1abs-(tz1abs/100)*100)*6)/10 // Get the "10s", then convert to mins (without losing int place)
  				);
  	}
docs: JAXB compatible dataTime Stamp
  
  Java 6 does not format Timezone with -05:00 format, and JAXB XML breaks without it.
  
  @return