将 XMLGregorianCalendar 对象转换为 'MM/dd/yyyy hh:mm' 字符串的最佳方法是什么?
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 标记。
toGregorianCalendar()
方法。
例如:
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm");
String date = sdf.format(xmlGregorianCalendar.toGregorianCalendar().getTime());
toGregorianCalendar(TimeZone timezone, Locale aLocale, XMLGregorianCalendar defaults)
这是您正在寻找的示例:
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());
此示例将 XMLGregorianCalendar 转换为日期
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());
请检查此静态实用程序。你刚刚提到了像“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);
}
{
XMLGregorianCalendar xmlCalendar = DatatypeFactory.newInstance()
.newXMLGregorianCalendar(new GregorianCalendar());
OffsetDateTime dt = xmlCalendar.toGregorianCalendar()
.toZonedDateTime().toOffsetDateTime();
return DateTimeFormatter.ofPattern("MM/dd/yyyy hh:mm"").format(dt);
}