如何利用 LocalDate.toEpochDay() 函数将日期换算为距离公元1年的天数?

2026-04-29 08:561阅读0评论SEO问题
  • 内容介绍
  • 相关推荐

本文共计665个文字,预计阅读时间需要3分钟。

如何利用 LocalDate.toEpochDay() 函数将日期换算为距离公元1年的天数?

`LocalDate.toEpochDay()` 返回的是从 `1970-01-01`(ISO纪元起始日)到指定日期之间的完整天数,而不是自约定纪元以来的天数——它不支持自定义纪元。如果你看到约定纪元这个词,很可能是在混淆Java中的 `EpochDay` 概念和某些领域(如金融协议、区块链时间戳)中自行约定的起始日。Java的 `EpochDay` 是基于ISO标准,不能更改起始日。

为什么 toEpochDay() 固定以 1970-01-01 为基准

这是 ISO 8601 和 Java Time API 的硬性约定:LocalDate 的纪元(epoch)就是 1970-01-01,且不可更改。调用 toEpochDay() 本质是计算该日期与这个固定起点的天数差。

  • 例如:LocalDate.of(1970, 1, 1).toEpochDay()0
  • LocalDate.of(1970, 1, 2).toEpochDay()1
  • LocalDate.of(1969, 12, 31).toEpochDay()-1

如果真要换算成“自某协定日”的天数,得手动偏移

Java 没有内置“自定义纪元的 toEpochDay”,但你可以用 ChronoUnit.DAYS.between() 或直接减法完成等效计算。

阅读全文

本文共计665个文字,预计阅读时间需要3分钟。

如何利用 LocalDate.toEpochDay() 函数将日期换算为距离公元1年的天数?

`LocalDate.toEpochDay()` 返回的是从 `1970-01-01`(ISO纪元起始日)到指定日期之间的完整天数,而不是自约定纪元以来的天数——它不支持自定义纪元。如果你看到约定纪元这个词,很可能是在混淆Java中的 `EpochDay` 概念和某些领域(如金融协议、区块链时间戳)中自行约定的起始日。Java的 `EpochDay` 是基于ISO标准,不能更改起始日。

为什么 toEpochDay() 固定以 1970-01-01 为基准

这是 ISO 8601 和 Java Time API 的硬性约定:LocalDate 的纪元(epoch)就是 1970-01-01,且不可更改。调用 toEpochDay() 本质是计算该日期与这个固定起点的天数差。

  • 例如:LocalDate.of(1970, 1, 1).toEpochDay()0
  • LocalDate.of(1970, 1, 2).toEpochDay()1
  • LocalDate.of(1969, 12, 31).toEpochDay()-1

如果真要换算成“自某协定日”的天数,得手动偏移

Java 没有内置“自定义纪元的 toEpochDay”,但你可以用 ChronoUnit.DAYS.between() 或直接减法完成等效计算。

阅读全文