我写了这个函数:
public static XMLGregorianCalendar getXMLGregorianCalendar(String date) throws OmniException{
XMLGregorianCalendar xmlCalender=null;
GregorianCalendar calender = new GregorianCalendar();
calender.setTime(Util.stringToJavaDate(date));
xmlCalender = DatatypeFactory.newInstance().newXMLGregorianCalendar(calender);
return xmlCalender;
}
public static Date stringToJavaDate(String sDate) throws OmniException{
Date date=null;
date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH).parse(sDate);
return date;
}
当我将date作为"2014-01-07"
传递时,我得到了作为2014-01-06T18:30:00:000Z
的输出date,我哪里错了?另外,如果我只想获取2014-01-06T18:30:00
和2014-01-06T18:30:00Z
,该怎么办
任何帮助我们都将不胜感激
发布于 2014-01-24 17:16:34
找到了下面的解决方案...发布它,因为它也可以帮助其他人:)
DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = format.parse("2014-04-24 11:15:00");
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(date);
XMLGregorianCalendar xmlGregCal = DatatypeFactory.newInstance().newXMLGregorianCalendar(cal);
System.out.println(xmlGregCal);
输出:
2014-04-24T11:15:00.000+02:00
发布于 2017-07-14 22:47:52
对我来说,最优雅的解决方案是这个:
XMLGregorianCalendar result = DatatypeFactory.newInstance()
.newXMLGregorianCalendar("2014-01-07");
使用Java 8。
扩展示例:
XMLGregorianCalendar result = DatatypeFactory.newInstance()
.newXMLGregorianCalendar("2014-01-07");
System.out.println(result.getDay());
System.out.println(result.getMonth());
System.out.println(result.getYear());
这将打印出来:
7
1
2014
发布于 2016-06-22 08:08:47
GregorianCalendar c = GregorianCalendar.from((LocalDate.parse("2016-06-22")).atStartOfDay(ZoneId.systemDefault()));
XMLGregorianCalendar date2 = DatatypeFactory.newInstance().newXMLGregorianCalendar(c);
https://stackoverflow.com/questions/20970088
复制相似问题