将XMLGregorianCalendar对象转换为'MM / dd / yyyy hh:mm'字符串的最佳方法是什么?
答案 0 :(得分:34)
首先使用XMLGregorianCalendar#toGregorianCalendar()
从中获取java.util.Calendar
个实例。
Calendar calendar = xmlGregorianCalendar.toGregorianCalendar();
从那一步开始,通过SimpleDateFormat
通常的方式帮助显而易见。
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy hh:mm");
formatter.setTimeZone(calendar.getTimeZone());
String dateString = formatter.format(calendar.getTime());
我只是想知道你是否真的不想使用HH
代替hh
,因为你没有在任何地方格式化am / pm标记。
答案 1 :(得分:7)
你可以使用
toGregorianCalendar()
方法。
E.g:
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm");
String date = sdf.format(xmlGregorianCalendar.toGregorianCalendar().getTime());
如果您需要将该日历转换为其他TimeZone和Locale,请使用toGregorianCalendar(TimeZone timezone, Locale aLocale, XMLGregorianCalendar defaults)
答案 2 :(得分:1)
这是您正在寻找的一个例子:
XMLGregorianCalendar date = ...; // initialization is out of scope for this example
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm");
GregorianCalendar gc = date.toGregorianCalendar();
String formatted_string = sdf.format(gc.getTime());
答案 3 :(得分:0)
此示例convert XMLGregorianCalendar to date
XMLGregorianCalendar xmlCalendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(new GregorianCalendar());
Date date = xmlCalendar.toGregorianCalendar().getTime();
DateFormat df = new SimpleDateFormat("MM/dd/yyyy hh:mm");
String dateStr = df.format(GregorianCalendar.getInstance().getTime());
答案 4 :(得分:0)
请检查此静态实用程序。您刚刚提到了“ ddMMyy”或“ HHmm”之类的模式,或者您想要的任何模式。这将非常有用。
public static String getDateTime(XMLGregorianCalendar gDate, String pattern){
return Optional.ofNullable(gDate)
.map(gdate -> {
Calendar calendar = gDate.toGregorianCalendar();
SimpleDateFormat formatter = new SimpleDateFormat(pattern);
formatter.setTimeZone(calendar.getTimeZone());
return formatter.format(calendar.getTime());
})
.orElse(null);
}