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

问题描述 投票:0回答:6

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

java xml
6个回答
45
投票

首先使用

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 标记。


11
投票

您可以使用

toGregorianCalendar()
方法。

例如:

SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm");
String date = sdf.format(xmlGregorianCalendar.toGregorianCalendar().getTime());

如果您需要将该日历转换为不同的时区和区域设置,请使用

toGregorianCalendar(TimeZone timezone, Locale aLocale, XMLGregorianCalendar defaults)


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

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

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

0
投票
{
XMLGregorianCalendar xmlCalendar = DatatypeFactory.newInstance()
    .newXMLGregorianCalendar(new GregorianCalendar());
OffsetDateTime dt = xmlCalendar.toGregorianCalendar()
    .toZonedDateTime().toOffsetDateTime();
return DateTimeFormatter.ofPattern("MM/dd/yyyy hh:mm"").format(dt);
}
© www.soinside.com 2019 - 2024. All rights reserved.