将 XMLGregorianCalendar 格式化为字符串

位置:首页>文章>详情   分类: Java教程 > 编程技术   阅读(385)   2023-06-26 07:54:18

学习将 XMLGregorianCalendar 实例格式化为多种模式的字符串,例如“MM/dd/yyyy hh:mm a z”在 Java 中使用 DateTimeFormatterSimpleDateFormat 类。

1. SimpleDateFormat 与 DateTimeFormatter

在 Java 8 之前,日期和时间的标准 Java 方法是通过 DateCalendar 类,解析和格式化日期的标准方法是通过 DateFormatSimpleDateFormat

对于 Java 8,首选的日期/时间类位于 java.time 包中,例如LocalDateLocalDateTimeZonedDateTime

同样,首选的日期/时间格式化/解析类不再位于 java.text 包中,而是来自 java.time.format 包。

除了这些类的使用方式和其中的方法之外,最显着的区别是并发应用程序中的行为

因此,总是有充分的理由使用DateTimeFormatter 而不是SimpleDateFormat

2. DateTimeFormatter(推荐)

从 Java 8 开始,最好的格式化方法是将日历实例转换为 ZonedDateTime,然后使用 DateTimeFormatter 对其进行格式化。 ZonedDateTime 对时区和偏移量的出色支持在处理多个区域设置时非常有用。

如果我们不需要语言环境信息,那么我们可以简单地将 ZonedDateTime 转换为 LocalDateTimeLocalDate 并打印本地化格式的输出。

使用 DateTimeFormatter 格式化 XMLGregorianCalendar 的 Java 程序。

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.GregorianCalendar;

import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;

public class Main
{
	private final static String TIMESTAMP_PATTERN
								= "MM/dd/yyyy hh:mm a z";

	private final static DateTimeFormatter DATE_TIME_FORMATTER
				= DateTimeFormatter.ofPattern(TIMESTAMP_PATTERN);

	public static void main(String[] args)
						throws DatatypeConfigurationException
	{

		GregorianCalendar cal = new GregorianCalendar();
		cal.setTime(new Date());

		XMLGregorianCalendar xgc = DatatypeFactory.newInstance()
									.newXMLGregorianCalendar(cal);

		//1. Convert XMLGregorianCalendar to ZonedDateTime in default timezone

		ZonedDateTime zdt = xgc.toGregorianCalendar().toZonedDateTime();
		System.out.println( DATE_TIME_FORMATTER.format(zdt) );

		//2. Convert XMLGregorianCalendar to ZonedDateTime in UTC

		ZonedDateTime zdtUTC = zdt.withZoneSameInstant(ZoneId.of("UTC"));
		System.out.println( DATE_TIME_FORMATTER.format(zdtUTC) );
	}
}

程序输出。

08/23/2019 01:53 PM GMT+05:30
08/23/2019 08:23 AM UTC

3. 使用 SimpleDateFormat 格式化 XMLGregorianCalendar

在下面的代码中,我们用当前的 XMLGregorianCalendar 对象创建了一个 Date 的实例。然后我们使用 SimpleDateFormat 将其格式化为字符串。

XMLGregorianCalendar xCal = ..; //Create instance
Date date = xCal.toGregorianCalendar().getTime();

DateFormat df = new SimpleDateFormat("MM/dd/yyyy hh:mm a z");
df.setTimeZone(TimeZone.getTimeZone("GMT"));

String formattedString = df.format(date);
System.out.println(formattedString);

输出:

02/18/2022 12:08 am IST

我们可以使用上面的代码以我们选择的任何模式将 XMLGregorianCalendar 实例格式化为字符串

快乐学习!!

地址:https://www.cundage.com/article/format-xmlgregoriancalendar-to-date-pattern.html

相关阅读

学习创建新日期、获取当前日期、解析日期为字符串或格式化Date 使用 java.util.Date类。这些用例是经常需要的,将它们放在一个地方将有助于为我们许多人节省时间。 值得注意的是,没有与...
学习将java.time.LocalDate转换为java.util.Date 反之亦然,使用易于理解的 Java 示例。 1.将日期转换为LocalDate Date.getTime() 方法...
学习将 java.util.Date 转换为 java.time.LocalDateTime,反之亦然理解 Java 程序。 1. 日期 -&gtl; LocalDateTime Date.ge...
学习使用 Java 中的 ZonedDateTime 方法将 ZonedDateTime.format(DateTimeFormatter) 实例转换为字符串。 1.内置格式化程序 DateTi...
学习将 XMLGregorianCalendar 实例格式化为多种模式的字符串,例如“MM/dd/yyyy hh:mm a z”在 Java 中使用 DateTimeFormatter 和 Si...
获取任何给定日期的第二天或前一天的 Java 示例。该示例使用旧版 java.util.Date 类以及来自 Java 8 的 java.time.LocalDate 类。 我们可以使用此示例代...
学习在 Java 中比较两个给定日期,以找出 在通用时间轴中哪个日期早,哪个日期晚。我们将看到使用以下类的日期比较示例: LocalDate、LocalDateTime 和 ZonedDateT...
了解 Java 中的 ZonedDateTime 类,如何创建其实例和其他用例,例如解析、格式化以及添加持续时间和时间段。 一、概述 java.time.ZonedDateTime 类,在 Ja...
从 LocalTime 转换为 java.sql.Time 的 Java 示例,反之亦然。 请注意,Time 类添加了格式化和解析操作以支持时间值的 JDBC 转义语法。它的日期组件应设置为“零...
学习用 Java 获取当前日期和/或时间。请注意,处理日期时间信息的适当方式在 JDK 8 前后有所不同。 对于 JDK 8 或更高版本,推荐的方法是使用 LocalDate 和 LocalTi...