为了账号安全,请及时绑定邮箱和手机立即绑定

在 Java 中设置 XML 公历日历值

在 Java 中设置 XML 公历日历值

幕布斯7119047 2022-09-14 16:25:01
从日历日期设置 XML 公历日历值的最佳方法是什么?    posting.setXMLGregorianCalendar(message.getCreateDate());这里我的班级:Message.javaprivate Calendar createDate;public Calendar getCreateDate() {    return createDate;}
查看完整描述

2 回答

?
弑天下

TA贡献1818条经验 获得超7个赞

你可以试试这个:


Calendar createDate = Calendar.getInstance();

Date cDate = createDate.getTime();

GregorianCalendar c = new GregorianCalendar();

c.setTime(cDate);

XMLGregorianCalendar date2 = DatatypeFactory.newInstance().newXMLGregorianCalendar(c);



查看完整回答
反对 回复 2022-09-14
?
千万里不及你

TA贡献1784条经验 获得超9个赞

博士

DatatypeFactory.newInstance().newXMLGregorianCalendar( 

    GregorianCalendar.from( 

        ZonedDateTime.now( 

            ZoneId.of( "Pacific/Auckland" ) 

        ) 

    )

)

一个时刻需要一个时区

XML 公历日历类、公历日历类日历类都表示一个时刻,即日期、一天中的时间和分配的时区。注意时区问题。如果无法显式解决区域问题,那么将隐式分配 JVM 的当前缺省时区。

以 的格式指定正确的时区名称,如 、 或 。切勿使用2-4个字母的缩写,例如或因为它们不是真正的时区,不标准化,甚至不是唯一的(!)。Continent/RegionAmerica/EdmontonAfrica/TunisEurope/MoscowESTIST

ZoneId z = ZoneId.of( "America/Montreal" ) ;

如果要使用 JVM 的当前默认时区,请请求它并作为参数传递。如果省略,代码将变得模棱两可,因为我们不确定您是否打算使用默认值,或者您是否像许多程序员一样没有意识到这个问题。

ZoneId z = ZoneId.systemDefault() ;  // Get JVM’s current default time zone.

时间

这些课程也很糟糕。Sun、甲骨文和 JCP 社区多年前就放弃了它们,采用了 JSR 310...你也应该这样做。仅将 java.time 类用于业务逻辑。…Calendar

ZoneId z = ZoneId.of( "Africa/Casablanca" ) ;

ZonedDateTime zdt = ZonedDateTime.now( z ) ;   // Capture the current moment as seen through the wall-clock time used by the people of a particular region (a time zone).

转换

如果与尚未更新到 java.time 的旧代码进行交互,请在旧类和新式类之间进行转换。查看添加到旧类中的新方法。

对象可以通过调用公历日历(区域日期时间)转换为对象(的子类)。ZonedDateTimeGregorianCalendarCalendar

GregorianCalendar gregCal = GregorianCalendar.from( zdt ) ;

A 可以转换为 a ,但我们必须多做一个步骤。该类本身缺少 来自 的转换器方法。一个帮助器类可以完成工作,数据类型工厂,如斯蒂芬·科尔伯恩的这个答案所示,“JodaStephen”java.time的发明者。GregorianCalendarXMLGregorianCalendarXMLGregorianCalendarGregorianCalendar

XMLGregorianCalendar xmlGregCal = DatatypeFactory.newInstance().newXMLGregorianCalendar( gregCal );

不是我推荐它,但你可以把它组合成一个单行,如顶部的tl;dr部分所示。

//img1.sycdn.imooc.com//6321901900011de012390724.jpg

查看完整回答
反对 回复 2022-09-14
  • 2 回答
  • 0 关注
  • 64 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信