26

将 XMLGregorianCalendar 对象转换为 'MM/dd/yyyy hh:mm' 字符串的最佳方法是什么?

4

5 回答 5

43

首先用于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 标记。

于 2013-02-04T14:16:09.893 回答
9

您可以 toGregorianCalendar()为此使用方法。

例如:

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)

于 2013-02-04T14:22:25.640 回答
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());
于 2013-02-04T14:17:33.640 回答
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);
}
于 2019-07-04T07:24:09.157 回答
0

此示例将 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());
于 2016-10-06T14:31:52.133 回答