问题标签 [offsetdatetime]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
157 浏览

java - 使用 Spring Boot REST 服务的 OffsetDateTime 的偏移量丢失

我正在使用 javaOffsetDateTime在客户端和服务器端存储时间。当我将时间信息发送到服务器时,本地日期时间部分如下所示: "2021-06-15T15:43:50"并且偏移量是+02:00(中欧夏令时间)。但是,当时间到达我的 spring boot REST 服务时,它被反序列化为: "2021-06-15T13:43:50"没有偏移量。客户端和服务器都在中欧的同一台主机上(我的开发者机器)。

正在序列化的字段如下所示:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX") 私有 OffsetDateTime lastWriteTime;

为什么我在服务器端有零偏移?我怎样才能在服务器端也有“本地”偏移量?

0 投票
2 回答
254 浏览

java - 从数据库中检索时,OffsetDateTime 值已更改

我正在使用MS SQL数据库中的一个表并开发了一个GET APIusingSpring Boot来检索该表中的所有数据。
这里的表包含一个类型的列datetimeoffset(7)

我的实体中有数据成员OffsetDateTime updatedDate,用于映射datetimeoffset数据库中的列

现在,当我收到 API 响应时,我看到updatedDate值 ( 2021-06-17T05:37:40.1938687+05:30 ) 与实际数据库值 ( 2021-06-16 19:07:40.1938687 -05:00 )不同.

我探索了网络以寻找一些帮助并尝试了一些类似于Solution的解决方案,但是我没有看到任何积极的结果。

任何帮助将非常明显,谢谢!

PS。Spring Boot版本:2.3.1.RELEASE

0 投票
2 回答
242 浏览

java - 我必须从字符串中获取 OffsetDateTime

字符串采用这种格式 - “2021-07-13 05:22:18.712”

我尝试使用此代码来解析它。 OffsetDateTime parsedDateTime = OffsetDateTime.parse("2021-07-13 05:22:18.712");

但我不断收到此错误 - org.threeten.bp.format.DateTimeParseException: Text '2021-07-13 05:22:18.712' could not be parsed at index 10.

我如何使它工作?任何建议都会有所帮助。谢谢

0 投票
0 回答
138 浏览

java - 无法使用 OffsetDateTime 作为使用 JPA Data/JPQL 的查询参数

我有一个带有数据成员updateDate类型的Entity CustomEntityOffsetDateTime

Repository为此定义了Entity一个简单的方法来检索与updateDate匹配的记录列表

现在,当从Controller/Service bean调用此方法时,我可以看到没有检索到匹配记录;但是,当我在数据库中执行生成的 SQL 时,我可以看到可用的匹配行。

我可以根据实体的其他数据成员检索记录;它只是一个问题OffsetDateTimeLocalDateTime

我明白java.time包支持不在JPA 2.1中;但是我正在使用JPA 2.3.1。我是否需要使用Converters (如JPA 2.1所建议的那样?

任何帮助都是非常可观的。

编辑:- 下面是实体的代码

我正在使用Microsoft SQL Server,生成的SQL查询(休眠生成)如下所示

绑定参数 [1] 作为 [TIMESTAMP] - [ 2021-07-27T17:22:34.597Z ]

0 投票
0 回答
28 浏览

spring-boot - 为什么使用OffsetDateTime在oracle数据库中保存的日期少了一天?

我收到一个json中的日期,我将它插入到一个oracle 10g数据库中,为此我使用Spring Boot和Jpa,在保存到数据库之前我使用映射器获取实体和日期的数据类型该实体是OffsetDateTime,问题是保存日期少了一天,例如我收到“20210711”,数据库保存2021-07-10,我该如何纠正错误?谢谢您的帮助。

实体中的字段

常数

映射器

0 投票
2 回答
178 浏览

java - Java OffsetDateTime 返回错误的偏移量

我有一个 Java Timestamp 值,例如:1799-12-31 19:03:58.0 当我尝试使用代码将其转换为 OffsetDateTime 时:

它给我的输出为:

哪个没有在前端(Angular 的日期管道)解析。但是相同的代码返回时间戳的不同偏移量:2019-08-24 10:15:22.0为:

Angular 的日期管道有效且成功地解析了哪个。

我不明白为什么它在“1799-12-31 19:03:58.0”日期返回不同的偏移量。

0 投票
3 回答
292 浏览

java - 如何使用 DateFormatter 将格式为 yyyyMMddHHmmss 的 DateTime 解析为 OffsetDateTime

我有一个用于 JSON 解析的 API,它需要一个 DateTimeFormatter 实例才能将日期时间字符串解析为 OffsetDateTime。但是我总是得到一个异常Unable to get ZoneOffset from TemporalAccessor: {},ISO 解析为 java.time.format.Parsed 类型 的 2021-08-17T13:26:49 API 使用 OffsetDateTime.parse(String, DateFormatter)。

我如何必须创建 DateTimeFormatter 才能提供 ZoneOffset,以便 API 能够正确解析 DateTime。ZoneOffset 可以是 UTC。

0 投票
1 回答
120 浏览

java - 为什么 OffsetDateTime 序列化/反序列化结果有差异?

我有以下对象:

我将此对象作为休息控制器的响应发送:

然而我有配置:

好的。所以......我得到的date回应是:

当我测试我的控制器时,我尝试获得响应,将其反序列化为Request对象并检查匹配:

但我得到一个例外,因为date预期对象和得到对象中的字段不同:

为什么会这样?

为什么Z出现而不是时区?为什么日期从 更改2021-10-212021-10-22?我该如何解决?

我没有得到任何异常,我匹配失败,因为当我匹配响应和预期对象时日期不同。我只是用标准反序列化对象ObjectMapper并检查与equals().

0 投票
1 回答
162 浏览

java - 如何在 java 13 或更高版本中格式化 OffsetDateTime?

在 Java 11 中,时钟系统使用毫秒精度,但显然在 Java 13 及更高版本中,它使用微秒精度,这导致我的测试失败。例如,OffsetDateTime.now()当我从数据库“2021-12-10T10:58:05.309595+01:00”中读取该日期时,给我这个日期“2021-12-10T10:58:05.309594500+01:00”。我正在寻找一种方法,我可以以它们应该相等的方式格式化第一个日期。我确实希望它在 OffsetDateTime 类型而不是字符串中。

更新:我意识到当我将 java 版本从 11 升级到 17 而不是在本地时出现了这个问题,当 gitlab 运行测试时我遇到了这个问题。

这是测试:

由于日期时间不相等,此测试失败。这是日志:

请你帮助我好吗?

0 投票
1 回答
54 浏览

java - 在 Java 中使用 OffsetDateTime 计算“时间前”

我目前有这个代码:

目标是根据给定的OffsetDateTime参数显示“时间前”。这是为了显示年、月、周、日、小时、分钟,一直到秒,如果所述时间单位不是在0. 但是我在计算月份时遇到了麻烦,因为结果总是返回为0,同时有一个“s”表示它不是真的0

例如,运行System.out.println(Utils.getTimeAgo(OffsetDateTime.parse("2020-12-13T15:54:43.971273200-05:00")))显示1 year 0 months 1 hour ago作为它的输出......