我有一个LocalDateTime的实例。
我需要映射它XMLGregorianCalendar(这里使用JAXB ),在最终的XML中,我希望时间在XML文档中看起来像下面这样:2020-03-04T19:45:00.000 1:00 (1小时是UTC的偏移量)。
我尝试过使用DateTimeFormatter将LocalDateTime转换为字符串,然后将其映射到XMLGregorianCalender。
我现在有两个问题:
>
我在DateTimeFormail中找不到任何格式化程序,它将时间格式化为UTC偏移量?是否存在这样的东西,或者我需要定义我的格式化程序模式?
其次,如果我能够将LocalDateTime格式化为所需的字符串格式,那么如果我仅从字符串表示创建一个XMLGregorianCalendar就足够了吗?
如果时区偏移量要从JVM的默认时区派生,则像这样编码:
LocalDateTime localDateTime = LocalDateTime.now();
ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.systemDefault()); // <== default
OffsetDateTime offsetDateTime = zonedDateTime.toOffsetDateTime();
XMLGregorianCalendar xmlGregorianCalendar = DatatypeFactory.newInstance()
.newXMLGregorianCalendar(offsetDateTime.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME));
System.out.println(localDateTime); // 2020-03-04T15:58:09.604171800
System.out.println(zonedDateTime); // 2020-03-04T15:58:09.604171800-05:00[America/New_York]
System.out.println(offsetDateTime); // 2020-03-04T15:58:09.604171800-05:00
System.out.println(xmlGregorianCalendar); // 2020-03-04T15:58:09.604171800-05:00
如果您想硬编码01:00
的偏移量,请这样做:
LocalDateTime localDateTime = LocalDateTime.now();
OffsetDateTime offsetDateTime = localDateTime.atOffset(ZoneOffset.ofHours(1)); // <== hardcoded
XMLGregorianCalendar xmlGregorianCalendar = DatatypeFactory.newInstance()
.newXMLGregorianCalendar(offsetDateTime.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME));
System.out.println(localDateTime); // 2020-03-04T16:00:04.437550500
System.out.println(offsetDateTime); // 2020-03-04T16:00:04.437550500+01:00
System.out.println(xmlGregorianCalendar); // 2020-03-04T16:00:04.437550500+01:00
或者像这样:
LocalDateTime localDateTime = LocalDateTime.now();
XMLGregorianCalendar xmlGregorianCalendar = DatatypeFactory.newInstance()
.newXMLGregorianCalendar(localDateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
xmlGregorianCalendar.setTimezone(60); // <== hardcoded
System.out.println(localDateTime); // 2020-03-04T16:03:09.032191
System.out.println(xmlGregorianCalendar); // 2020-03-04T16:03:09.032191+01:00
我试图弄清楚如何将LocalDateTime转换为偏移量为0的Date对象。 我使用的将LocalDateTime转换为日期的当前代码是: LocalDateTime: 转换到日期后: 是的,我看到有一个区域偏移量被传递到Instant中,但我不确定如何做我所要求的。
将 LocalDateTime 转换为 LocalDateTime(以 UTC 为单位)。 我在网上搜索。但没有找到解决方案
我有如下代码 每当我通过将其设置为实体来保存到我的数据库时,它会添加5:30作为偏移量
我正在尝试将ISO日期时间隐藏到LocalDateTime: 这段代码起作用--它将它转换为localdate(包括offset)。但问题是当我通过日期没有偏移:2011-12-03T10:15:30- 我知道为什么我有这个例外,问题是如何将包括偏移量在内的两个日期转换为LocalDateTime?。我想避免一些字符串解析(检查字符串是否包含'+'/'-')。
本文向大家介绍如何将Java LocalDateTime格式化为ISO_DATE_TIME格式,包括了如何将Java LocalDateTime格式化为ISO_DATE_TIME格式的使用技巧和注意事项,需要的朋友参考一下 首先,设置日期: 现在,将日期时间格式化为ISO_DATE_TIME格式: 示例 输出结果
问题内容: 我需要在查询中将DATE值转换为带时区的TIMESTAMP,但目前我正在获取不能被EF使用的时区(欧洲/巴黎)。 例如,执行此操作时: 我目前得到此输出: 但我需要像这样: 任何想法如何做到这一点? 问题答案: 您可以将转换为,然后使用将此时间戳转换为具有时区的时间戳: