首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自己的XMLGregorianCalendar格式

自己的XMLGregorianCalendar格式
EN

Stack Overflow用户
提问于 2018-05-18 17:27:27
回答 2查看 82关注 0票数 0

我正在尝试将YYYYww格式保存为XMLGregorianCalendar格式,但找不到任何方法。有没有办法只将年份和星期存储到XMLGregorianCalendar中?

我无法通过使用不同的格式找到任何解决方案。

EN

回答 2

Stack Overflow用户

发布于 2018-05-18 17:43:01

代码语言:javascript
复制
String week = data.getWeek();
week = week.substring(4,6);

Calendar cal = Calendar.getInstance();
cal.set(Calendar.WEEK_OF_YEAR, Integer.parseInt(week));
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
Date date = cal.getTime();

GregorianCalendar c = new GregorianCalendar();
c.setTime(date);
return DatatypeFactory.newInstance().newXMLGregorianCalendar(c);

解决方案。

票数 0
EN

Stack Overflow用户

发布于 2018-05-19 05:18:25

我会这样说:

代码语言:javascript
复制
    DateTimeFormatter yearWeekFormatter = new DateTimeFormatterBuilder()
            .appendPattern("YYYYww")
            .parseDefaulting(ChronoField.DAY_OF_WEEK, 1)
            .toFormatter();
    LocalDate date = LocalDate.parse(week, yearWeekFormatter);
    XMLGregorianCalendar newXgc = DatatypeFactory.newInstance()
            .newXMLGregorianCalendar(date.toString());
    System.out.println(newXgc);

使用201749week字符串(2017年的第49周),代码段打印:

2017-12-04

也可以不使用XMLGregorianCalendar,因为LocalDate.toString()会生成完全相同的格式。

XML没有一周的表示形式。我们得选个日子。在你自己的答案中,我选择了一周的第一天,星期一。parseDefaulting(ChronoField.DAY_OF_WEEK, 1)指定由于字符串parsed中没有星期几,因此应使用星期的第一天。

另外,XML日期格式类似于日期和时间格式的国际标准ISO8601。但这是不一样的。在ISO8601AS(与XML相反)中,您可以用2017-W49格式表示日历周。如果你想生产它:

代码语言:javascript
复制
    DateTimeFormatter isoWeekFormatter = DateTimeFormatter.ofPattern("YYYY-'W'ww");
    System.out.println(date.format(isoWeekFormatter));

输出:

2017-W49

链接

的与日期相关的options.

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

https://stackoverflow.com/questions/50408075

复制
相关文章

相似问题

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