问题标签 [java.time.instant]

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 投票
2 回答
3079 浏览

java - 我应该使用什么 Java DateTime 类?

我们有一个用于生成报告的库。它从数据文件(SQL、XML、JSON 等)中读取数据,然后可以在用户编写的公式中修改日期时间,然后按照报告输出指定的格式对其进行格式化。

方程中的使用可以添加时间跨度,获取部分值,如“if date.month == 2”,以及Excel 中的几乎所有 datetime 宏

因为数据可以是 JSON(或没有架构的 XML),所以日期时间可以是“2019-01-25”、“2019-01-25T14:32:23”、“2019-01-25T14:32:23.12345”、“ 2019-01-25T14:32:23Z”或“2019-01-25T14:32:23Z-0500”(最后两个也可以有“.12345”)。

如果没有时区偏移,我们假设日期时间是 UTC。虽然这应该是真的,但通常不是,它是当地时间,但它的使用方式并不重要。因此,除非指定时区偏移量,否则将其设为 UTC 是可行的(到目前为止,我们已经使用了 Date)。

第一个问题 - 我应该使用什么类来保存这个值?从我读过的内容来看,我认为 ZonedDateTime,但也许是 Instant?

第二个问题 - 当我必须做一些事情时,我应该使用什么类来为时间跨度添加 3 天到日期时间?

第三个问题 - 是否有一些解析器可以解析我上面列出的所有不同字符串?还是我需要调用 String.contains() 来确定格式,然后根据它做一个明确的模式?如果是这样,使用什么类?

0 投票
2 回答
2550 浏览

java - postgresql 日期与 java Instant

假设我在 Java 应用程序中有一个 type 字段Instant并将其作为 type 存储在 PostgreSQL 数据库中DATE

例如,如果我保存21.02.2019 14:03:59它将被存储为21.02.2019但是当我从数据库中读取时它将如何重新翻译?

那将会:

  • 21.02.2019 00:00:00.000或者
  • 21.02.2019 23:59:59.000?

PS。我知道我应该Timestamp改用:)

0 投票
5 回答
6071 浏览

java - 为什么不支持向 java.time.Instant 添加周数?

下面的一段代码:

抛出异常:

为什么不支持周数?我理解为什么不支持月份和年份,因为它们在较小单位中的持续时间可能会有所不同。但是一周的持续时间是固定的(7 天),我可以通过以下方式达到相同的效果:

0 投票
0 回答
306 浏览

date - Spring Data Jpa:java 8 即时比较

在我的应用程序中,我需要按他的创建日期搜索订单。在我的实体中,creationDate 字段的类型是 java.time.Instant。

在我的类ManualOrderSpecification 中,我需要检查creation_date。

我想比较没有小时数或相同小时(例如 0 小时)的创建日期。

我的代码:

当然它不起作用,因为我比较相同的日期但不同的时间,0小时到另一个小时。我如何强制与本地日期进行比较,或者我可以强制将 root.get(ManualOrder_.createdDate) 属性设置为 0 小时?

非常感谢

0 投票
1 回答
14388 浏览

java - 计算两个瞬间之间的天数、小时数和分钟数

我有一个像这样格式化的即时:

我想计算瞬间和 Instant.now() 之间的天数、小时数和分钟数(如果可能),例如:

我可以这样做吗?

0 投票
3 回答
849 浏览

java - 带有小数秒的 Java 时间戳

如何将 Java 打印Instant为带有小数秒的时间戳,如 1558766955.037 ?如示例所示,所需的精度为 1/1000。

我试过(double) timestamp.getEpochSecond() + (double) timestamp.getNano() / 1000_000_000了,但是当我将它转换为字符串并打印它时,它显示1.558766955037E9.

0 投票
2 回答
2019 浏览

java - java.time.LocalDate 与“营业日期”的即时对比

我想代表一个“营业日期”,例如“2019 年 6 月 3 日”发生的交易。为此,我们积极忽略时区,因为完全知道日本的“2019 年 6 月 3 日”可能是美国的“2019 年 6 月 2 日”——在“当天”内订购同样无关紧要。所有日期都将是今天或之前的日期。

我的明显答案是,这是一个LocalDate. 但是,其他人建议将其更好地表示为Instantof 2019-06-03T00:00:00.000Z

除了在 UI 中将其转换/格式化为人类可读日期时我们必须进行的不同调用之外,这两种方法之间实际上有什么区别吗?

这是一个不同的问题Instant 和 LocalDateTime 之间有什么区别?因为时间与这个问题无关,它只与过去(或当前)日期有关。

0 投票
1 回答
764 浏览

java - Java 8:使用 Instant,如何检索 ZoneId 信息

我在我的用例中使用 Java Instant,我想在时间轴中捕获确切的时刻,例如{用户上次访问我的网站的时间}。这是数据持久保存在后端 (sql) 中的时间。当我使用 Instant.now(); 时,它以 UTC 格式持续存在;

由于我的网站在所有区域(世界上)都使用,当用户登陆主页时,我想根据他的 zoneId 将 dateTime (他上次访问网站的时间)显示为 localDateTime。

如何获取 ZoneId 信息?

由于我的网站目前托管在 2 台服务器中,并且两台服务器都在印度,如果我这样做ZoneId.systemDefault(),我总是会得到印度 ZoneId(亚洲/加尔各答)。所以,转换是不可能的。

如果来自美国的某人击中了我的服务器,我如何在我的服务器中获取 zoneId 作为美国?

0 投票
1 回答
2086 浏览

java - 在java中以毫秒精度将即时日期时间插入MySql数据库

我正在使用mysql 5.7.x版本。我也在使用java 8。我正在尝试java.time.instant从java代码将当前日期时间以毫秒精度插入到我的mysql数据库中。为此,我正在使用preparedstatement.

我的数据库中的表是:

我要插入的java代码是:

从我的日志中,我可以看到毫秒为:2019-07-30T10:52:34.865Z。但在我的 mysql 数据库中,它变成:2019-07-30 10:52:34.000Z

我在堆栈中搜索了很多问题和答案,但似乎没有一个对我有用。

更新1:

我尝试使用 setObject 作为:

但还是一样的结果。无法检索数据库中的毫秒数。

0 投票
1 回答
403 浏览

java - 从 Java 中的 MySQL 检索的 long 值中的毫秒数不正确

首先,我试图在我的 mysql 数据库中以毫秒精度插入时间戳,我通过这段代码获得了成功:

为此,我在数据库中的表是:

instant.toEpochMilli()这是来自我的 java 代码和timestamp来自我的数据库的毫秒数:

毫秒:1564566174331 和时间戳:2019-07-31 15:27:54.331

现在我想在我的 java 代码中检索这个时间戳,因此我的代码是:

但是我得到的总时间戳(以毫秒为单位)是:

毫秒:1564566174000

不知何故,331以毫秒为单位的值消失了。

如何以毫秒精度检索完整的时间戳值。现在我越来越糊涂了。我错过了什么?

我尝试了什么:

A)我尝试使用 ResultSet 的 getTime() 获取时间戳以检索总时间(以毫秒为单位),如下所示:

仍然没有检索到毫秒位置值。结果与上面相同。

B)我也尝试了 getObject() 并且令我惊讶的是,毫秒位置值以某种方式放置在 NANOSECONDS 位置。

我得到了什么:

对象:2019-07-31 15:27:54.000000331