将XMLGregorianCalendar转换为MM / dd / yyyy hh:mm String的最佳方法是什么?

时间:2013-02-04 14:12:18

标签: java xml

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

5 个答案:

答案 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();

此示例convert date to string

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);
}