📅  最后修改于: 2023-12-03 15:01:59.715000             🧑  作者: Mango
在Java中,LocalDate
是用于表示日期的一个类,它不包含时间信息。而时间戳则是表示从1970年1月1日00:00:00(UTC时区)开始经过的毫秒数。本文将介绍如何将LocalDate
转换为时间戳。
我们可以通过将LocalDate
转换为LocalDateTime
,再调用atStartOfDay()
方法将时间设置为当天的00:00:00,最后调用toInstant()
方法将LocalDateTime
转换为时间戳。
LocalDate localDate = LocalDate.now();
Instant instant = localDate.atStartOfDay().toInstant(ZoneOffset.UTC);
long timestamp = instant.toEpochMilli();
上述代码中,LocalDate.now()
获取当前日期,atStartOfDay()
方法将时间设置为当天的00:00:00,toInstant(ZoneOffset.UTC)
方法将LocalDateTime
转换为Instant
类型,toEpochMilli()
方法将Instant
类型的时间转换为时间戳。
LocalDate
类还提供了一个名为toEpochDay()
的方法,它返回从1970年1月1日开始计算的天数。我们可以通过将返回的天数乘以一天的毫秒数,再加上当天的毫秒数,就能得到对应的时间戳。
LocalDate localDate = LocalDate.now();
long timestamp = localDate.toEpochDay() * 24 * 60 * 60 * 1000;
上述代码中,LocalDate.now()
获取当前日期,toEpochDay()
方法返回从1970年1月1日开始计算的天数,24 * 60 * 60 * 1000
是一天的毫秒数,最终得到的timestamp
是当天的毫秒数。
本文介绍了两种将LocalDate
转换为时间戳的方法。第一种方法使用atStartOfDay()
方法,将LocalDate
转换为LocalDateTime
,再转换为时间戳。第二种方法直接使用toEpochDay()
方法,计算出从1970年1月1日到当天的天数,再转换为时间戳。两种方法各有优劣,读者可以根据实际场景选择使用。