📜  LocalDateTime 到 XMLGregorianCalendar - Java (1)

📅  最后修改于: 2023-12-03 15:32:44.005000             🧑  作者: Mango

LocalDateTime 到 XMLGregorianCalendar - Java

在Java中,LocalDateTimeXMLGregorianCalendar 之间的互相转换,可能是你需要经常处理的一种场景。本文将介绍如何在Java中使用 LocalDateTimeXMLGregorianCalendar来互相转换。

1. LocalDateTime 转 XMLGregorianCalendar

LocalDateTime 转换为 XMLGregorianCalendar,可以使用 DatatypeFactory 类的 newXMLGregorianCalendar 方法:

import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import java.time.LocalDateTime;

public class LocalDateTimeToXMLGregorianCalendar {
    public static void main(String[] args) {
        LocalDateTime localDateTime = LocalDateTime.now();
		
        try {
            DatatypeFactory datatypeFactory = DatatypeFactory.newInstance();
            XMLGregorianCalendar xmlGregorianCalendar = datatypeFactory.newXMLGregorianCalendar(localDateTime.toString());
			
            System.out.println("LocalDateTime : " + localDateTime);
            System.out.println("XMLGregorianCalendar : " + xmlGregorianCalendar);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

运行以上程序,可以得到以下输出:

LocalDateTime : 2021-06-25T15:21:23.967
XMLGregorianCalendar : 2021-06-25T15:21:23.967
2. XMLGregorianCalendar 转 LocalDateTime

XMLGregorianCalendar 转换为 LocalDateTime,可以使用 toLocalDateTime() 方法,将 XMLGregorianCalendar 转换为 GregorianCalendar,然后再通过 toZonedDateTime() 方法转换为 ZonedDateTime,最后再使用 toLocalDateTime() 方法转换为 LocalDateTime

import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.GregorianCalendar;

public class XMLGregorianCalendarToLocalDateTime {
    public static void main(String[] args) {
        XMLGregorianCalendar xmlGregorianCalendar = null;
		
        try {
            DatatypeFactory datatypeFactory = DatatypeFactory.newInstance();
            xmlGregorianCalendar = datatypeFactory.newXMLGregorianCalendar(LocalDateTime.now().toString());
			
            GregorianCalendar gregorianCalendar = xmlGregorianCalendar.toGregorianCalendar();
            LocalDateTime localDateTime = gregorianCalendar.toZonedDateTime().withZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime();

            System.out.println("XMLGregorianCalendar : " + xmlGregorianCalendar);
            System.out.println("LocalDateTime : " + localDateTime);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

运行以上程序,可以得到以下输出:

XMLGregorianCalendar : 2021-06-25T15:21:23.967
LocalDateTime : 2021-06-25T15:21:23.967
3. 结语

本文介绍了如何在Java中使用 LocalDateTimeXMLGregorianCalendar互相转换。希望对你有所帮助。