- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个日期字符串,看起来就像这样。
2017-12-06T17:39:00Z
我想做的是将这个字符串转换为 XMLGregorianCalendar,但使用相同的格式。
我现在做的是:
String choosenDate = 2017-12-06T17:39:00Z;
GregorianCalendar c = new GregorianCalendar();
DateTimeFormatter timeFormatter = DateTimeFormatter.ISO_DATE_TIME;
TemporalAccessor accessor = timeFormatter.parse(dateChoisie);
Date date = Date.from(Instant.from(accessor));
c.setTime(date);
System.err.println("choosenDate: " + dateChoisie);
System.err.println("date : " + date);
XMLGregorianCalendar dateXMLGreg = null;
try
{
dateXMLGreg = DatatypeFactory.newInstance().newXMLGregorianCalendar(c);
System.err.println("dateXMLGreg: " + dateXMLGreg);
}
catch (DatatypeConfigurationException e)
{
messages.addMessage(new MessageBuilder().error().code("webservice.failure").build());
}
这给了我以下输出:
10:47:45,957 ERROR [stderr] (default task-47) choosenDate: 2017-12-06T17:39:03Z
10:47:45,957 ERROR [stderr] (default task-47) date : Wed Dec 06 18:39:03 CET 2017
10:47:45,958 ERROR [stderr] (default task-47) dateXMLGreg: 2017-12-06T18:39:03.000+01:00
那么我该怎么做才能让我的 XMLGregorianCalendar dateXMLGreg 看起来像:
2017-12-06T17:39:03Z
最佳答案
这比您想象的要容易。
String isoDateTime = "2017-12-06T17:39:00Z";
XMLGregorianCalendar dateXMLGreg = DatatypeFactory.newInstance()
.newXMLGregorianCalendar(isoDateTime);
System.out.println(dateXMLGreg);
这会打印
2017-12-06T17:39:00Z
newXMLGregorianCalendar
有一个重载版本,它接受字符串 - your 字符串 - 作为参数。我相信您会像问题中那样添加 try/catch。
编辑:您的XMLGregorianCalendar
将其毫秒设置为DatatypeConstants.FIELD_UNDEFINED
。这样做是为了避免将毫秒打印为 toString()
结果的一部分(当您打印 XMLGregorianCalendar
时会隐式调用它)。
再编辑:正如 Basil Bourque 在 a comment 中正确所说的那样,根据您需要 XMLGregorianCalendar
的用途,您可以使用现代 Java 日期和时间 API java.time
中的类,甚至从中受益。例如:
Instant dateInst = Instant.parse(isoDateTime);
System.out.println(dateInst);
这给出了与上面完全相同的输出,2017-12-06T17:39:00Z
。仅当偏移量始终为 Z
时,Instant
类才会工作,这可能是因为这是您要求返回的内容。 java.time 的潜在优势包括 (1) API 通常更易于使用 (2) 如果您需要一些进一步的日期时间操作,现代 API 提供了丰富的操作。如果偏移量可能会有所不同,您可以尝试使用 OffsetDateTime
,但这是一个较长的故事,我将留给其他问题。
关于java - 在java中格式化XMLGregorianCalendar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47711877/
下面是我的代码 GregorianCalendar gregory=new GregorianCalendar(); gregory.setTime(new Date()); XMLGregorian
我目前遇到了 XMLGregorianCalendar 格式化问题,想向 Java 专家寻求帮助。通过来自其他系统的函数调用,我在网页上显示了一个数据对象,其中包含“SUBMIT_DATE”:1516
在我们的应用程序中,我们使用提供肥皂响应 XML(文档样式)的 Web 服务。 当我检查网络服务提供商时,他们只是一个转换的接口(interface)他们从不同来源获取的响应节点值(Subscribe
这个问题已经有答案了: Calendar to Date conversion for dates before 15 Oct 1582. Gregorian to Julian calendar s
我使用下面的代码在 Web 服务中设置 XMLGregorianCalendar 字段 SimpleDateFormat format = new SimpleDateFormat("dd-MMM-y
我从数据库中获取一些日期,将它们放入使用 JAXB 从 XSD 模式派生的类的对象中,然后将对象编码到 XML 文件。 其中一个派生类具有 XMLGregorianCalendar 字段,我希望将放在
这个问题已经有答案了: java.util.Date to XMLGregorianCalendar (10 个回答) 已关闭 7 年前。 我从字符串日期转换为 XMLGregorianCalenda
这个问题在这里已经有了答案: Why does sdf.format(date) converts 2018-12-30 to 2019-12-30 in java? [duplicate] (3
我正在创建一系列日期,以 JSON 字符串的形式存储在数据库中,并且它们全部保存为 GMT(例如,2015-05-01T13:00:00.000Z)。我的计算机采用 GMT+2,因此当我尝试显示它们时
我在将日历对象转换为 YYYY-MM-DD HH:mm:ss 格式的 XML 公历时遇到了一些问题。 我当前的代码是: Calendar createDate = tRow.getBasic().ge
我需要从 XML 填充 JAX Bean,但是没有 setter 方法。我在下面收到以下消息 Failed to invoke public javax.xml.datatype.XMLGregor
我如何比较 XMLGregorianCalendar 的 2 个实例以找出哪个更大? 其中一个日期变量有值 date1 = 2009-02-23T05:54:17+05:30 还有一个, date2
使用 Java 1.6 wsimport 我从 WSDL 为 Web 服务生成了源代码。请求结构中的一个字段在 WSDL 包含的 XML 架构中具有类型 xs:dateTime,在生成的代码中具有类型
我正在开发一个以 XML 形式来回调用的 Web 服务程序。然而,我的问题不在于此。当我在我的机器上本地(在 Eclipse 中)运行它时,它似乎可以工作。但是,当我的同事运行它时/如果我尝试在服务器
我在 UI 中有以下格式的日期.. Eg: Thu. 03/01 我将它们转换为 XMLGregorianCalendar,如下所述。 final DateFormat format = new Si
我必须通过 jax-ws 公开一个 ejb 服务层。 我已经使用 jax-ws 和 wsimport 生成了 Web 服务,但我被一个奇怪的事情阻止了;日期被映射到 XmlGregorianCalen
我有一个日期作为输入 = 2021-03-12T10:42:01.000Z.... 我想转换成这种格式: String pattern = "yyyy-MM-dd'T'HH:mm:ssZ"; publ
我有一个 XML Jaxb 类来设置 XMLGregorianCalendar 类型。但是我们应该在这个属性中只设置年份。 XMLGregorianCalendar xmlCal = Datatype
我有一个日期作为输入 = 2021-03-12T10:42:01.000Z.... 我想转换成这种格式: String pattern = "yyyy-MM-dd'T'HH:mm:ssZ"; publ
我有一个 XML Jaxb 类来设置 XMLGregorianCalendar 类型。但是我们应该在这个属性中只设置年份。 XMLGregorianCalendar xmlCal = Datatype
我是一名优秀的程序员,十分优秀!