更多: zhilu jiaocheng
Java 将 ZonedDateTime 转换为 LocalDate
要将 ZonedDateTime 转换为 LocalDate 实例,请使用 toLocalDate() 方法。
它返回一个与给定日期时间相同的年、月和日的LocalDate
。
import java.time.LocalDate; import java.time.ZonedDateTime; public class Main { public static void main(String[] args) { ZonedDateTime zonedDateTime = ZonedDateTime.now(); LocalDate localDate = zonedDateTime.toLocalDate(); System.out.println(localDate); } }
输出:
2019-04-02
LocalDate 表示没有时间和时区的日历日期。
ZonedDateTime 实例包含这两种信息。
ZonedDateTime = LocalDate + 时间 + 时区
将 LocalDate 转换为 ZonedDateTime
要将 LocalDate
实例转换为 ZonedDateTime
实例,我们有两种方法。
LocalDate 直接转换为 ZonedDateTime
如果我们只想将当前时区的本地日期转换为不同时区的本地日期。
例如:
只想添加区域信息,那么我们可以使用LocalDate.atStartOfDay(zoneId)
方法。
LocalDate localDate = LocalDate.now(); ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.of("EST5EDT")); System.out.println(zonedDateTime);
输出:
2019-04-02T00:00-04:00[EST5EDT]
LocalDate 先转换为 LocalDateTime 再转换为 ZonedDateTime
如果我们想将时间和时区信息添加到本地日期,那么我们需要将这两个部分一一添加以获取ZonedDateTime
实例。
ZonedDateTime atStartOfDay()
ZonedDateTime atTime(LocalTime time)
ZonedDateTime atTime(int 小时,int 分钟)
ZonedDateTime atTime(int 小时,int 分钟,int 秒)
ZonedDateTime atTime(int 小时,int 分钟,int 秒,int nanoOfSecond)
上述方法将有助于向 LocalDate
添加时间部分。
然后我们可以使用 LocalDateTime.atZone(ZoneId) 方法添加区域信息。
import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; public class Main { public static void main(String[] args) { LocalDate localDate = LocalDate.now(); //local date LocalDateTime localDateTime = localDate.atTime(10, 45, 56); //Add time information ZoneId zoneId = ZoneId.of("Asia/Kolkata"); // Zone information ZonedDateTime zdtAtAsia = localDateTime.atZone(zoneId); // add zone information ZonedDateTime zdtAtET = zdtAtAsia .withZoneSameInstant(ZoneId.of("America/New_York")); // Same time in ET timezone System.out.println(zdtAtAsia); System.out.println(zdtAtET); } }
输出:
2019-04-02T10:45:56+05:30[Asia/Kolkata] 2019-04-02T01:15:56-04:00[America/New_York]
日期:2020-09-17 00:09:42 来源:oir作者:oir