问题标签 [java-time]

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

java - 如何在 Joda Time / Java 8 中列出时区偏移量、时区 ID 和长名称?

Joda Time 的时区 id 可以简单地使用以下代码段显示。

但是如何显示相应的时区偏移量、时区 ID 和长名称,以便列表看起来像下面这样?

它们需要在下拉框中列出以供选择。


以下代码段显示了名称,但它显示的偏移量看起来很奇怪。

在它显示的长列表中,其中一些显示为,

偏移量应如此列表中所示。

0 投票
8 回答
98311 浏览

java - java - 如何从当前日期减少一个月并使用java存储在日期变量中?

如何从当前日期减少一个月并希望java.util.Date使用此代码在变量 im 中疼痛,但它在第 2 行显示错误

如何将此日期存储在java.util.Date变量中?

0 投票
2 回答
13220 浏览

java - Java 8 中的新日期和时间 API

页面上,我阅读了以下内容:

用日期进行计算也很容易。与 Java < 1.8 的当前情况相比,可能是最好的改进:

我没有清楚地看到版本 < 1.8 之前的优势。

也许有人可以给我一个例子?Atm 我在问自己,新的日期和时间 API 的改进来自哪里。

0 投票
9 回答
530511 浏览

java - java.time.LocalDateTime 和 java.util.Date 之间的转换

Java 8 有一个全新的日期和时间 API。此 API 中最有用的类之一是LocalDateTime,用于保存与时区无关的日期与时间值。

java.util.Date为此目的,可能有数百万行代码使用遗留类。因此,在连接新旧代码时,需要在两者之间进行转换。由于似乎没有直接的方法可以做到这一点,怎么能做到呢?

0 投票
2 回答
2629 浏览

java - 如何在 Java 7 中获取国际原子时间

我正在做一个 Java7 项目,我们需要一个国际原子时间的时间戳。我发现了一些与此相关的其他问题,这些问题指向 JSR-310 和 ThreeTen 项目(正在实施 JSR-310):

如何在 Java 中获取 GPS 时间和 TAI 时间?

http://www.coderanch.com/t/549178/java/java/TAI-Atomic-Time-International

但是,我正在努力弄清楚 Java 7 使用什么以及从哪里获取它。ThreeTen 似乎有旧的 SourceForge 和 GitHub 页面,以及一个 OpenJDK 页面。

我找到了 Java 7 backport,但是从 Maven 下载它后,它不包含我真正需要的 TAIInstant 类(TIAInstant 类在 ThreeTen SourceForge JavaDoc 中的 javax.time.TAIInstant 下列出)。

为了完整起见,这是我的 pom.xml 的摘录:

我应该使用其他东西,我应该从哪里得到它?

注意:抱歉,我无法提供指向我所指的所有页面的链接,StackOverflow 不会让我在没有更高代表的情况下每个帖子有 > 2 个链接。

[编辑] 想要 TAI 的原因是我需要一个单调递增的时间戳,我相信 TAI 满足(即使在正负闰秒期间,因为它不关心闰秒,所有秒数都一样,包括闰秒)。

从各种来源阅读了有关 POSIX / Unix 时间的信息后,我仍然不清楚 Unix 时间在闰秒内到底发生了什么。我知道 Unix 时间在指代 UTC 时间方面是模棱两可的,但我不清楚在闰秒发生的那一刻 Unix 时间会发生什么?例如,Unix 时间会“暂停”还是倒退?也许更重要的是,即使它不应该根据 Unix 时间规范,Unix 实现是否真的遵守关于闰秒的规范......?

最后,我是否正确地说 System.currentTimeMillis() 将获得相当于 POSIX 时间(尽管以毫秒而不是秒为单位)?

注意,我需要一个可跨 JVM 和机器移植的对象(排除 System.nanoTime() 或类似的)。

[结论]

TAI
TAI 是一个测量时间的系统,其中每一秒都被计算并且“所有秒数都相等” - 即。每一秒包含相同的时间段,所有秒(包括闰秒)都计入总秒数。这意味着 TAI 中的秒数(从某个任意起点开始计算,例如 Unix 纪元)是一个单调递增的整数。

POSIX 时间
POSIX 时间是测量时间的标准(不是实现)。它将每一天定义为恰好有 86400 秒。因此,POSIX 时间不计算闰秒(因为偶尔一分钟可能有 61 秒,导致天数 >86400 秒,理论上一分钟可能有 59 秒,导致天数 <86400 秒)。这意味着 POSIX 中的“秒”具有可变长度,并且在闰秒之前/期间/之后不久,POSIX 时钟可能会跳过几秒或重复它们。具体来说,Meno Hochschild 在他的回答中引用的 POSIX 规范指出:“自 Epoch 以来的实际时间与当前秒数之间的关系是未指定的。”

UTC
UTC 是与地球围绕太阳运动的方式有关的时间标准,旨在保持太阳位置与一天中的时间(在阈值内)之间的关系。即在地球的 UTC+0 区域,太阳总是在 UTC 时间的中午处于最高位置。闰秒(正或负)是必要的,因为地球自转的速度不是固定的,并且它不会以可预测的方式变化(这意味着我们无法预测何时需要闰秒 - 或者它们是正闰秒还是负闰秒)

代表时间
在我看来,TAI 和 POSIX 都是“秒数”的表示(即计算机实际存储的容易的东西),而 UTC 是时间的“人类解释”(即年/月/日Hour:Minute:Second.millisecond) 通常不由计算机内部存储。

翻译时间
鉴于上述情况,从 POSIX(不计算闰秒)到 TAI(计算闰秒)存在许多问题:

  1. 它需要维护一个表/闰秒计数来将任何 POSIX 时间转换为 TAI 时间
  2. 即使解决了第 1 点,上述 POSIX 规范也不能保证闰秒期间会发生什么,因此在这种情况下,我们无法准确表示一个明确的时间
  3. 如果多个系统必须通信,在它们之间传递时间戳,我们必须保证闰秒表/计数保持一致

另一方面,很容易从 POSIX 转换为 UTC 的“人类解释”。它不需要闰秒的知识,因为它只是假设每天都有相同的秒数(尽管其中一些“秒”实际上具有不同的时间长度)。在实践中,您只需使用 POSIX 规范中公式的倒数来获得各种 UTC 时间分量(再次,请参阅 Meno Hochschild 引用的 POSIX 规范)。

0 投票
5 回答
35061 浏览

java - 在 Java 8 / jsr310 中格式化持续时间

我正在将一个项目从 Joda-Time 转换到 java8 的本地时间库,但遇到了障碍。

我一直找不到 Duration 的格式化程序。我想要一个自定义字符串格式,例如HHH+MM,其中 75 小时 15 分钟的 Duration 格式为"75+15"

这很容易通过转换为句点并使用 PeriodFormatter 来使用 Joda-Time 完成,但我在 Java8 中找不到这种类型的类。我错过了什么吗?

0 投票
13 回答
514581 浏览

java - 将 java.util.Date 转换为 java.time.LocalDate

java.util.Date将对象转换为新的 JDK 8/JSR-310的最佳方法是什么java.time.LocalDate

0 投票
1 回答
1830 浏览

java - 在 JSR-310 中查找下一个星期几的出现

给定一个 JSR-310 对象,例如LocalDate,我怎样才能找到下周三(或任何其他星期几?

0 投票
6 回答
77753 浏览

jackson - JDK8 java.time 是否有杰克逊数据类型模块?

我正在为新的JDK8 java.time类寻找一个模块。我查看了FasterXML GitHub 项目列表,目前没有找到。

据我了解,Jackson 仍在针对 JDK6 进行编译,因此不能直接使用这些类,并且必须按照 Joda 的要求将其构建为单独的模块。

我不介意开始这个项目,但我想看看是否已经在进行其他努力。

0 投票
1 回答
2032 浏览

java - 在 JSR-310 中计算修改后的儒略日

如何从 JSR-310 类计算修正儒略日,例如LocalDate?(在 JDK 8 中)

具体来说,这是计算被称为“修改儒略日”的连续天数,而不是儒略历系统中的日期。

例如: