首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将字符串值转换为XMLGregorianCalendar并将格式更改为XMLGregorianCalendar

将字符串值转换为XMLGregorianCalendar并将格式更改为XMLGregorianCalendar
EN

Stack Overflow用户
提问于 2022-06-10 23:22:48
回答 1查看 39关注 0票数 0
代码语言:javascript
复制
public class Main {
        public static void main(String[] args) throws IOException, ParseException, DatatypeConfigurationException {
    
            DateFormat format = new SimpleDateFormat("YYYY-MM-DD");
            Date date = format.parse("2022-04-13T09:54:54-04:00");
    
            GregorianCalendar cal = new GregorianCalendar();
            cal.setTime(date);
    
            XMLGregorianCalendar xmlGregCal =  DatatypeFactory.newInstance().newXMLGregorianCalendar(cal);
    
            System.out.println(xmlGregCal);
    
    //        Expected is 2022-04-13 in XMLGregorianCalendar value
    //        But getting 2021-12-26T00:00:00.000+11:00
        }
    }

的XMLGregorianCalendar值为2022-04-13 .但是得到2021-12-26T00:00.000+11:00。能请一些专家帮忙吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-11 04:29:29

你有很多问题。

  • 您正在使用几年前被JSR 310中定义的现代java.time类取代的糟糕的日期时间类。
  • 格式设置模式无法与正在分析的数据匹配。

将输入解析为OffsetDateTime对象。您的输入文本符合java.time默认使用的ISO 8601标准格式。因此,不需要指定格式模式。

代码语言:javascript
复制
OffsetDateTime odt = OffsetDateTime.parse( "2022-04-13T09:54:54-04:00" ) ;

您不需要进一步涉及更多遗留类,如GregorianCalendarXMLGregorianCalendar。工作完成了。没有必要使用或学习这些课程。它们的功能已经完全被java.time所取代。

您可以通过调用OffsetDate#toString生成标准ISO 8601格式的文本。

代码语言:javascript
复制
String output = odt.toString() ;

看这个在Ideone.com现场运行的代码

2022-04-13T09:54:54-04:00

你说过:

将格式更改为XMLGregorianCalendar

日期-时间对象没有“格式”。文本有格式。GregorianCalendarXMLGregorianCalendarOffsetDateTime不是文本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72580617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档