问题标签 [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 投票
1 回答
1480 浏览

java - Java GMT 显示

我这里有个问题要解决,不知道怎么解决?

我必须这样做:

ShowCurrentTime.java, 给出了一个以 GMT 显示当前时间的程序。修改程序,使其提示用户输入与 GMT 的时区偏移量并显示指定时区的时间。

这是一个示例运行:

到目前为止,我已经完成了默认的 GMT 时间,但我不知道该怎么做。

0 投票
3 回答
19449 浏览

java - java.time 是否无法解析秒的分数?

随着 Java 8 (b132) 在 Mac OS X (Mavericks) 上的第一个版本,使用新java.time 包的这段代码可以工作:

渲染:

但是,当我按照DateTimeFormatter 类文档中的指定添加“SS”作为秒的分数(和“55”作为输入)时,会引发异常:

文档说默认使用严格模式,并且需要与输入数字相同数量的格式字符。所以我很困惑为什么这段代码会失败:


另一个使用文档中示例的示例(“978”)(失败):


这个例子有效,添加了一个小数点(但我在文档中没有找到这样的要求):

渲染:


从输入字符串格式中省略句点字符会导致失败。

失败:

失败:

0 投票
2 回答
166 浏览

android - 从当前时区转换为 UTC 递减 2 小时而不是 1

我想将日期从我当前的时区转换为 UTC。

结果对我来说是无法理解的。

代码:

LogCat 结果是:

如您所见:我的时区是 CET (GMT+1)

那么为什么如果我的输入是20:00 我会返回 18:00 而不是 19:00 呢?

0 投票
1 回答
6097 浏览

java - java.time.LocalDate 的导入失败

找不到本地日期我是否缺少导入指令

0 投票
1 回答
5597 浏览

java - 如何将 UTC 时间转换为其他时区(“CST”、“IST”)

在我的 Android 应用程序服务器中将返回UTC以下格式(yyyy-MM-dd HH:mm:ss) 24 小时的某个日期,我需要将这些时间转换为用户的时区,CST例如IST.

我做了以下代码,但我知道它是否正确,请帮助我以正确的方式进行时区转换。

我将 UTC 日期作为 json 字符串并转换为用户的时区格式并显示 Android 端

0 投票
3 回答
553 浏览

java - 缺少 java.time ::toString(String pattern) 方法

考虑以下代码:

joda-time 类(DateTime,LocalDate等)包含一个toString方法,它接受您想要的格式的字符串。这是一个非常方便的方法。然而,java-8 实现省略了这个方法。相反,您需要调用format(DateTimeFormatter formatter).

一个小小的抱怨,当然。但我的问题是:有什么理由从 java.time 中省略了吗?由于这个小疏忽,将我的应用程序从 joda-time 转换为 java.time 将变得更加困难。但是,如果有合乎逻辑的原因,我可以接受。并不是说你来这里是为了缓解我的担忧,但我想我会问一下以防万一。

编辑:对于亲密的选民来说,这不是一个基于意见的问题。任何熟悉 joda-time/java.time 的内部工作原理以及他们以某种方式开发的动机的人都有资格回答这个问题,即使他们从未回答过。

0 投票
1 回答
41960 浏览

java - Java 8 java.time:在 Instant 与 LocalDateTime 中添加 TemporalUnit

我正在使用 Java 8 中的新 java.time 包。我有一个遗留数据库,它给了我java.util.Date,我将它转换为Instant.

我想要做的是添加一个基于另一个数据库标志的时间段。我可以添加几天、几周、几个月或几年。我不想关心我要添加什么,我希望将来能够添加更多选项。

我的第一个想法是Instant.plus(),但这给了我一个UnsupportedTemporalTypeException大于一天的值。Instant 显然不支持大时间单位的操作。好吧,随便LocalDateTime吧。

所以这给了我这个代码:

现在,这是我第一次使用新的时间 API,所以我可能在这里遗漏了一些东西。但对我来说,我必须去似乎很笨拙:

即使我不必使用 Date 部分,我仍然会觉得它有点尴尬。所以我的问题是,我这样做是否完全错误,最好的方法是什么?


编辑:扩展评论中的讨论。

我想我现在对 LocalDateTime 和 Instant 如何使用 java.util.Date 和 java.sql.Timestamp 有了更好的了解。感谢大家。

现在,一个更实际的考虑。假设用户向我发送了他们在世界任何地方的日期,任意时区。他们发给我2014-04-16T13:00:00,我可以将其解析为 LocalDateTime。然后我将它直接转换为 java.sql.Timestamp 并保存在我的数据库中。

现在,不做任何其他事情,我从我的数据库中提取我的 java.sql.timestamp,转换为LocalDateTimeusing timestamp.toLocalDateTime(). 都好。然后我使用 ISO_DATE_TIME 格式将此值返回给我的用户。结果是2014-04-16T09:00:00

我认为这种差异是由于某种类型的与 UTC 的隐式转换。我认为我的默认时区可能会应用于值(EDT,UTC-4),这可以解释为什么这个数字会延迟 4 小时。

新问题。从本地时间到 UTC 的隐式转换在哪里发生?保留时区的更好方法是什么。我不应该直接从当地时间作为字符串 (2014-04-16T13:00:00) 转到LocalDateTime吗?我应该期待用户输入的时区吗?

0 投票
1 回答
2937 浏览

java - JSR-310 中两个不同的基于周的年份定义的动机是什么?

这些是包中的两个字段java.time.temporal

IsoFields.WEEK_BASED_YEAR

WeekFields.ISO.weekBasedYear()

ISO-8601 定义了除其他两种日期外的所谓周日期,即通常的日历日期(由年、月和日组成)和序数日期(由年和年组成) )。星期日期以 YYYY-'W'ww-e 格式定义。w 代表一年中的第几周,e 代表数字 ISO-day-of-week。Y 代表基于周的年,与日历年相同,但在日历年的开始或结束时除外,因为基于周的年与最终可以在上一年开始的周周期绑定。有两个规则对于理解星期日期是如何形成的很重要:

  1. 星期总是从星期一开始。
  2. 日历年的第一周是至少包含四天的一周。

乍一看,两个 JSR-310 字段似乎是相同的,因为 ISO-8601 只提到了一种基于周的年份。但是等等,惊喜。让我们考虑以下代码示例:

虽然我非常了解第二个变体,但我真的很惊讶看到第一次约会的不同结果,它在其类名中使用了“官方”ISO-8601-reference。解释计算结果:

日期 2000-02-29 对应于 ISO-weekdate-notation 中的 2000-W09-2 而 2014-02-25 对应于 2014-W09-2保留星期和星期几。到目前为止一切顺利。较小字段的这种保留特性类似于如何更改日历年的规则(在大多数情况下,应该保持日历日期中的月份和日期不变)。

但是 2014-03-01 的结果是什么?在这里,算法只是简单地将相应的星期日期添加了四天,以考虑“日期”字段中的差异(29 对 25)。我没有找到这种行为的任何来源或官方文档。有人知道我们在哪里可以找到这两个领域之间差异的理由吗?有关算法行为的任何可用文档?

更新:

现在我尝试用这个表达式来测试新 API 的自洽性,以便找出两个字段中哪一个得到更好的支持:

输出是 2014-03-01 类似于所描述的情况IsoFields.WEEK_BASED_YEAR,尽管我仍然发现结果 2014-02-25 (=2014-W09-2) 更合乎逻辑。IsoFields由于到目前为止在类中也发现了这个时间单元,因此行为在类中是自洽的IsoFields。看起来像一个未记录且不直观的“功能”。

我正在使用版本:java.runtime.version=1.8.0-b132

更多测试:

输出:

我不承认任何明确的规则。在添加 14 个基于周的年份时,既不保留星期几,也不保留月份中的日期。所以这是一个额外的问题:背后的规则是IsoFields.WEEK_BASED_YEARS什么?也许 JSR-310-team 可以启发我们?

0 投票
12 回答
441453 浏览

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

我想转换java.time.LocalDatejava.util.Date类型。因为我想将日期设置为JDateChooser. 或者是否有任何支持java.time日期的日期选择器?

0 投票
6 回答
148396 浏览

java - 如何从 LocalDate 和 LocalDateTime 中提取纪元?

如何从orLong的实例中提取纪元值?我尝试了以下方法,但它给了我其他结果:LocalDateTimeLocalDate

我想要的只是1391539861本地 datetime的值"04.02.2014 19:51:01"。我的时区是Europe/OsloUTC+1 夏令时。