问题标签 [zoneddatetime]

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 回答
472 浏览

java - 使用休眠从 hsqldb 读取 ZonedDateTime 会丢失 TimeZoneInfo

我正在使用 ZonedDateTime 来跟踪系统中发生的事件。例如

为了运行一些测试,我在内存数据库中使用了 hsqldb。我通过在配置 .properties 文件中指定它来运行 sql 脚本来填充它

在该文件中,我插入一条记录为

它执行没有任何问题。

后来,当我从运行@NamedQuery 的数据库中获取这条记录时,我总是得到一个本地时区的值。发生读取的日志部分是:

所以:我用 TimeZone +01:00 插入它,Hibernate 堆栈在本地 TimeZone -08:00 中读回它。

有没有办法用正确的区域实际读取整个时间戳?

相同的代码在 Postgres 的生产环境中运行,并且时间戳在那里按预期运行(即我可以编写和读取 ZonedDateTime 并且区域信息不会丢失)。

编辑:@fredt Postgress 也返回 Timestamp,但“尊重”脚本中指定的时区。

例子:

和日志输出:

在 INSERT 语句中使用了 UTC+01(欧洲时间),休眠/驱动程序将其转换为本地时间(UTC-08)。只要我得到正确的时间点,这对我来说很好,因为在内部,完整的应用程序知道时区等。

0 投票
2 回答
2287 浏览

java - 使用 ZonedDateTime 和 Calendar API 计算一年中的一周问题

我试图从 ISO-8601 日期格式字符串输入计算一年中的一周。最初我用 java.time.ZonedDateTime 尝试了这个,但它给出了输入日期的错误结果 - 2049 年 1 月 2 日。然后我尝试使用日历 API,它也对 2049 年 12 月 31 日给出了不正确的响应。

我附上了示例测试代码

上面代码的输出

0 投票
1 回答
878 浏览

java - 将 Java ZonedDateTime 转换为不同的格式 ZonedDateTime

我有一个ZonedDateTime以下格式的java对象

我希望它也以以下格式显示为ZonedDateTime对象

我怎样才能做到这一点?

0 投票
2 回答
4988 浏览

java - ZonedDateTime 对 SQL 数据库的持久性

美好的一天,
我创建了将在全球范围内使用的 Web 应用程序服务。
因此,我需要以 UTC 格式存储日期时间值,并将它们以挂钟时间的时钟表示给最终用户。
阅读堆栈溢出后,我明白,我应该:

  1. 使用时间戳作为 DB 中的列类型(当前为 MariaDB 10.1.20)
  2. 在 Java 中使用 ZonedDateTime(我使用 java8)

在这些值之间进行转换时出现了问题。
当我使用 JDBC 时,我必须进行以下转换:

我的代码:

当我使用:

它返回我错误(我需要在我的域模型的覆盖相等方法中比较它们)
下面是两者的打印:

zonedDateTimeBeforeSave: 2017-01-24T20:18:17.720Z
zonedDateTimeAfterSave: 2017-01-24T20:18:17Z

问题:

  1. 我的选择是否正确。也许,我应该使用另一列或 java 类型...
  2. 我做转换是否正确。也许还有另一种更好的方法

谢谢

  1. 编辑:在马特约翰逊的帮助下,我明白问题出在事实上,当我将日期时间保存到数据库时,它不会保存分数,尽管它应该。仅供参考,列类型是时间戳(6)。
  2. 编辑:现在我使用 java.time.Instant 而不是 ZonedDateTime
0 投票
1 回答
232 浏览

java - java.time.ZonedDateTime 不支持 Drools Fusion 转换为 long

我试图在之前、之后同时使用 Drools Fusion 时间运算符,但我不断收到错误消息:

不支持从 java.time.ZonedDateTime 转换为 long

在我的对象中,我比较的时间是 ZonedDateTime。Drools 是否要求时间变量是特定类型?转换为长的错误是什么意思?

我曾尝试使用 .isBefore() 和 .isAfter() 但似乎 Drools 无法识别这些功能。

0 投票
2 回答
1313 浏览

java - 使用 LocalDateTIme 和 ZonedDateTime 从日期中减去一天后得到错误的结果

我正在测试"2016-03-28T02:00:00+0200"(1459123200 in UTC Sec.)

减去 1 天后,应用 DST,输出应为:

“2016-03-27T03:00:00+0200”

但我得到了这个:

2016-03-26T01:00+01:00[欧洲/斯德哥尔摩]

代码:

请检查并指出我哪里出错了。

0 投票
2 回答
68365 浏览

java - 如何将 ZonedDateTime 格式化为字符串?

我想将 a 转换ZonedDateTime为 aString的格式("dd/MM/yyyy - hh:mm")。我知道这在 Joda-Time 其他类型中是可能的,只需使用它们toString("dd/MM/yyyy - hh:mm")......但这不适用于ZonedDateTime.toString().

如何将 a 格式化ZonedDateTime为 a String


编辑:

我试图在另一个时区打印时间,结果似乎总是一样的:

而且我和洛杉矶不在同一个时区。


编辑2:

找到如何更改时区:

0 投票
1 回答
250 浏览

jhipster - 为什么 JHipster 页面不接受 ZonedDateTime 的字符串

我最近将我的域对象从 LocalDate 更改为 ZonedDateTime。我还创建了一个全新的游戏 JHipster 应用程序和一个为两个班级成员选择 ZonedDateTime 的游戏实体。测试应用程序(新)可以正常工作,而我现有的应用程序却不能,即使在完成所有代码两次之后也是如此。我使用 Liquibase 加载了 CSV 数据,我的列表代码正确显示了日期。这是我的 Maven 输出中的数据,例如 entrydate='2017-02-23T19:53:18-05:00[America/New_York]', transaction='Initial Balance',

当我选择在 dialog.html 中使用“datetime-picker”更新日期时间值时,文本框中会显示一个字符串日期时间,但是当我按下“保存”时,会出现“内部服务器错误”,并且Maven 输出显示:

.HttpMessageNotReadableException:无法读取文档:无法在索引 23 处解析文本“2017-02-26T00:53:18.000Z”(通过参考链:org.ciwise.blackhole.domain.GenLedger[“entrydate”]);嵌套异常是 com.fasterxml.jackson.databind.JsonMappingException: Text '2017-02-26T00:53:18.000Z' could not be parsed at index 23 (通过参考链:org.ciwise.blackhole.domain.GenLedger["entrydate "])]

有谁知道为什么选择器会在文本框中产生当 HTTP PUT 发生(编辑)时不可接受的字符串文本?

我的应用程序确实使用服务类,但它们处理与 JPA 存储库类相同的 Java 域对象。

还有一件事,API 的架构显示例如“entrydate”:“2017-02-23T21:44:04.859Z”,但实际的 JSON 返回是“entrydate”:“2017-02-23T19:53:18.000-0500 ",

我希望其他人以前遇到过这种情况。

谢谢

大卫

0 投票
3 回答
22305 浏览

java - 在 ZonedDateTime 或 Instant 中将小时分钟和秒设置为 00

我有一个 Utc 格式的日期字符串 -

我想在ZonedDateTime 中将其转换为 Java 日期表示中的以下格式。

打印ZonedDateTime时,应显示

我试过以下代码 -

输出:

我希望在 ZonedDateTime 中标准化开始时间。我只想使用 java 库而不是任何第三方库来实现它。

0 投票
3 回答
1747 浏览

java - ZonedDateTime 格式以显示当前时间,其中已包含偏移量

我一直在寻找这个答案,但我可能会误认为如何实现这一点。我有一个 ZonedDateTime 变量,目前如果我要打印它,它将打印例如 2017-12-03T10:15:30+01:00。有没有办法打印已经添加或减去偏移量的时间?例如,我想看看上面 16:30 的例子。谢谢您的帮助!