专业的JAVA编程教程与资源

网站首页 > java教程 正文

LocalDate、LocalDateTime、Date之间相互转换

temp10 2024-12-16 16:15:40 java教程 14 ℃ 0 评论

为了满足程序员和机器对时间的处理,java8新增了一些关于日期的和时间的API

LocalDate,LocalDateTime,LocalTime 这些主要是便于程序员阅读使用的,

LocalDate、LocalDateTime、Date之间相互转换

Instant 这个主要是便于机器处理的

Duration:主要用于以秒和纳秒衡量时间长短

Period:主要用于以LocalDate衡量时间长短的

1.LocalDate、LocalTime、LocalDateTime之间的转换关系


// LocalDateTime 转 LocalDate
LocalDateTime localDateTime = LocalDateTime.now();
LocalDate localDate = localDateTime.toLocalDate();
  
// LocalDateTime 转 LocalTime
LocalDateTime localDateTime = LocalDateTime.now();
LocalTime localTime = localDateTime.toLocalTime();

// LocalDate 转 LocalDateTime
LocalDate localDate = LocalDate.now();
LocalDateTime localDateTime = localDate.atStartOfDay(ZoneOffset.ofHours(8)).toLocalDateTime();

// LocalDate、LocalTime 转 LocalDateTime
LocalDate localDate = LocalDate.now();
LocalTime localtime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.of(localDate,localTime);

2、Date、Instant、时间戳之间的转换

//Date 转 LocalDateTime
Date date = new Date();
LocalDateTime localDateTime = date.toInstant().atZone(ZoneOffset.ofHours(8)).toLocalDateTime();

//LocalDate 转 Date
LocalDate localDate = LocalDate.now();
Date nowDate = Date.from(localDate.atStartOfDay(ZoneOffset.ofHours(8)).toInstant());

//LocalDateTime 转 Date
LocalDateTime nowDateTime = LocalDateTime.now();
Date nowTimeDate = Date.from(nowDateTime.atZone(ZoneOffset.ofHours(8)).toInstant());

//获取秒级时间戳
 long timestamp =  Instant.now().getEpochSecond();
//获取毫秒级时间戳
long timestamp =  Instant.now().toEpochMilli() /1000;
//LocalDateTime获取秒级时间戳
localDateTime.toInstant(ZoneOffset.ofHours(8)).getEpochSecond();

//LocalDate 获取秒级时间戳
localDate.atStartOfDay(ZoneOffset.ofHours(8)).toInstant().getEpochSecond();

//时间戳 转换为LocalDateTime
LocalDateTime.ofInstant(Instant.ofEpochSecond(timestamp),ZoneId.of("+8"));

3.时间之间的长短计算

//两个日期之间相差多少秒
long seconds = Duration.between(LocalDateTime.now(),LocalDateTime.now().plusDays(1)).get(SECONDS);
//两个日期之间相差多少天
long days =Period.between(LocalDate.now(),LocalDate.now().plusDays(1)).get(DAYS)

4.时间的格式化

// localDate => String
LocalDate localDate = LocalDate.now();
String nowDate = localDate.format(DateTimeFormatter.ofPattern("YYYY-MM-dd"));

//String => LocalDate
String nowDateStr = "2020-08-16";        
LocalDate nowLocalDate = LocalDate.parse(nowDateStr,DateTimeFormatter.ofPattern("YYYY-MM-dd"));

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表