- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
本文将提供在 Java LocalDate
和 epoch 之间转换的示例。Epoch是用作特定历法时代起源的时间瞬间。Epoch是测量时间的参考点。 LocalDate
的历元参考点是 1970-01-01,格式为 YYYY-MM-DD。当我们将诸如 2019-11-15 这样的 LocalDate
转换为Epoch天数时,结果将是从 1970-01-01 到 2019-11-15 的天数。同理,当我们将 18215 等Epoch天数转换为 LocalDate
时,将通过将 18215 天数与 1970-01-01 相加得到结果 LocalDate
。
1. 使用 LocalDate.toEpochDay()
找到将 LocalDate
转换为Epoch日的代码片段。
long numberOfDays = localDate.toEpochDay();
2. 使用 LocalDate.ofEpochDay()
找到将Epoch天数转换为 LocalDate
的代码片段。
LocalDate localDate = LocalDate.ofEpochDay(numberOfDays);
现在详细找到在 Java LocalDate
和 epoch 之间转换的示例。
将 LocalDate
转换为Epoch天数是从 1970-01-01 到给定本地日期的天数计算。将 LocalDate
转换为Epoch秒或毫秒是从 1970-01-01T00:00:00Z 开始到给定本地日期的时间计算。
LocalDateToEpoch.java
package com.concretepage;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
public class LocalDateToEpoch {
public static void main(String[] args) {
//Epoch reference of date is 1970-01-01
LocalDate localDate = LocalDate.parse("2019-11-15");
//LocalDate to epoch days
long numberOfDays = localDate.toEpochDay();
System.out.println(numberOfDays);
//LocalDate to epoch seconds
long timeInSeconds = localDate.toEpochSecond(LocalTime.NOON, ZoneOffset.MIN);
System.out.println(timeInSeconds);
//LocalDate to epoch milliseconds
Instant instant = localDate.atStartOfDay(ZoneId.systemDefault()).toInstant();
long timeInMillis = instant.toEpochMilli();
System.out.println(timeInMillis);
instant = localDate.atTime(LocalTime.MIDNIGHT).atZone(ZoneId.systemDefault()).toInstant();
timeInMillis = instant.toEpochMilli();
System.out.println(timeInMillis);
}
}
输出
18215
1573884000
1573756200000
1573756200000
LocalDate
提供 toEpochDay()
方法将本地日期转换为Epoch日。找到 Java 文档。
long toEpochDay()
toEpochDay()
将此日期转换为Epoch日。 toEpochDay()
计算从 1970-01-01 到给定本地日期的天数。如果给定的本地日期是 1970-01-01,则Epoch天数将为 0。
LocalDate localDate = LocalDate.parse("2019-11-15");
long numberOfDays = localDate.toEpochDay();
在 Java 9 中,LocalDate
提供了 toEpochSecond()
方法来将本地日期转换为Epoch秒。找到 Java 文档。
long toEpochSecond(LocalTime time, ZoneOffset offset)
toEpochSecond()
将此 LocalDate
转换为自Epoch 1970-01-01T00:00:00Z 以来的秒数。 LocalDate
与给定的时间和区域偏移相结合,以计算从 1970-01-01T00:00:00Z 开始的秒数。
long timeInSeconds = localDate.toEpochSecond(LocalTime.NOON, ZoneOffset.MIN);
要将 LocalDate
转换为Epoch毫秒,我们可以使用 Instant.toEpochMilli()
将此时刻转换为Epoch 1970-01-01T00:00:00Z 的毫秒数。要获得Epoch毫秒,首先我们将 LocalDate
转换为 Instant
,然后使用其 toEpochMilli()
方法。
Instant instant = localDate.atStartOfDay(ZoneId.systemDefault()).toInstant();
long timeInMillis = instant.toEpochMilli();
instant = localDate.atTime(LocalTime.MIDNIGHT).atZone(ZoneId.systemDefault()).toInstant();
timeInMillis = instant.toEpochMilli();
通过将给定时间添加到 1970-01-01T00:00:00Z,将给定的Epoch天数、Epoch秒数或Epoch毫秒数转换为 LocalDate
。找到代码。
EpochToLocalDate.java
package com.concretepage;
import java.sql.Timestamp;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
public class EpochToLocalDate {
public static void main(String[] args) {
//Epoch reference of date is 1970-01-01
long numberOfDays = 18215;
LocalDate localDate = LocalDate.ofEpochDay(numberOfDays);
System.out.println(localDate);
//Using Instant
long timeInSeconds = 1567109422L;
localDate = LocalDate.ofInstant(Instant.ofEpochSecond(timeInSeconds), ZoneId.systemDefault());
System.out.println(localDate);
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochSecond(timeInSeconds), ZoneId.systemDefault());
localDate = localDateTime.toLocalDate();
System.out.println(localDate);
long timeInMillis = 1567109422123L;
localDate = LocalDate.ofInstant(Instant.ofEpochMilli(timeInMillis), ZoneId.systemDefault());
System.out.println(localDate);
//Using Timestamp
localDate = new Timestamp(timeInMillis).toLocalDateTime().toLocalDate();
System.out.println(localDate);
}
}
输出
2019-11-15
2019-08-30
2019-08-30
2019-08-30
2019-08-30
LocalDate.ofEpochDay()
通过将天数添加到 1970-01-01 来获得 LocalDate
的实例。找到 Java 文档。
static LocalDate ofEpochDay(long epochDay)
找到代码片段。
LocalDate localDate = LocalDate.ofEpochDay(numberOfDays);
Java 9 LocalDate.ofInstant()
接受 Instant
和区域 id 并返回 LocalDate
对象。找到 Java 文档。
static LocalDate ofInstant(Instant instant, ZoneId zone)
Instant
提供了以下方法来处理 epoch。
1. 以下方法使用 1970-01-01T00:00:00Z Epoch的秒数获取 Instant
的实例。
static Instant ofEpochSecond(long epochSecond)
找到代码片段。
localDate = LocalDate.ofInstant(Instant.ofEpochSecond(timeInSeconds), ZoneId.systemDefault());
2. 以下方法使用 1970-01-01T00:00:00Z Epoch的毫秒数获取 Instant
的实例。
static Instant ofEpochMilli(long epochMilli)
找到代码片段。
localDate = LocalDate.ofInstant(Instant.ofEpochMilli(timeInMillis), ZoneId.systemDefault());
我们可以使用 LocalDateTime.toLocalDate()
方法将 LocalDateTime
转换为 LocalDate
。
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochSecond(timeInSeconds), ZoneId.systemDefault());
localDate = localDateTime.toLocalDate();
找到 java.sql.Timestamp
构造函数。
public Timestamp(long time)
这将使用自 1970-01-01T00:00:00Z 以来的毫秒时间值构造一个 Timestamp
对象。
找到代码片段。
localDate = new Timestamp(timeInMillis).toLocalDateTime().toLocalDate();
我正在尝试计算 2 个 localDates 之间的天数 我从这个答案中获得灵感:https://stackoverflow.com/a/325964对于这个问题Determine Whether T
我在使用 Joda daysBetween 函数时遇到问题。它一直在告诉我 The method daysBetween(ReadableInstant, ReadableInstant) in th
初始问题: 在Scala中,我想使用隐式 Ordering[T]#Ops比较两个LocalDate . 它只是使用像 > 这样的“运算符”而不是isAfter . 它应该只是一个导入:import s
如何删除 localDate 中的 T? 我需要删除“T”以匹配数据库中的数据。 这是我的代码 DateTimeFormatter formatter = DateTimeFormatter.ofPa
这个问题已经有答案了: How to format LocalDate object to MM/dd/yyyy and have format persist (4 个回答) How can you
这个问题在这里已经有了答案: What is the difference between public, protected, package-private and private in Jav
这个问题已经有答案了: SimpleDateFormat ignoring month when parsing (4 个回答) Java date format conversion - getti
这个问题已经有答案了: SimpleDateFormat ignoring month when parsing (4 个回答) Java date format conversion - getti
这个问题在这里已经有了答案: Localdate.format, format is not applied (2 个答案) How to format LocalDate to string? (
这个问题在这里已经有了答案: Importing two classes with same name. How to handle? (11 个回答) 7年前关闭。 我正在练习如何处理日期。但是当我
根据 Joda 中的文档: public LocalDate(int year, int monthOfYear, int dayOfMonth, Chronology chron
我正在尝试开发一个独立于 GWT 的通用模块,直到它实际在 GWT 应用程序中使用为止。问题是 GWT 不支持 joda 并且我的模块不使用 GWT。 我想要实现的目标(这行不通): 最
问题:Spring 似乎对 LocalDate 使用不同的反序列化方法,具体取决于它是出现在 @RequestBody 还是请求 @ReqestParam -这是正确的吗?如果是这样,是否有办法将它们
我想使用 Java8 DateTime API 中的 LocalDate 和 LocalDateTime,并且在值为 null 时无法坚持到 postgresql date 和 timestamp。
我正在做以下编程练习:Unlucky Days 。声明如下: Friday 13th or Black Friday is considered as unlucky day. Calculate h
这个问题已经有答案了: Java 8 LocalDateTime is parsing invalid datetime (5 个回答) How to sanity check a date in J
我有一个包含以下字段的员工类。 class Employee { final int id; final String name; final LocalDate update
这个问题已经有答案了: If statement gives condition is always true (4 个回答) 已关闭 3 年前。 我试图将两个日期与日期列表进行比较(列表元素已被删除
被这个问题困扰了一段时间,希望得到一些意见。我想验证用户输入的日期,以便我可以使用 LocalDate 对象执行计算。但是,当输入有效日期时,返回的日期是前一个无效日期,这会引发异常并崩溃。我错过了什
这个问题已经有答案了: How can I parse/format dates with LocalDateTime? (Java 8) (11 个回答) 已关闭 3 年前。 我有一个日期时间信息字
我是一名优秀的程序员,十分优秀!