博客
关于我
LocalDateTime基本使用(包括Data转化)
阅读量:90 次
发布时间:2019-02-26

本文共 4973 字,大约阅读时间需要 16 分钟。

Java LocalDateTime 时间操作指南

1. 时间初始化

在Java中,可以通过 LocalDateTime 类来获取和操作当前时间。以下是基本操作的示例:

// 获取当前时间
LocalDateTime nowTime = LocalDateTime.now();
System.out.println("当前时间:" + nowTime);
// 设置指定时间
LocalDateTime endTime = LocalDateTime.of(2020, 5, 20, 5, 20, 10, 0);
System.out.println("指定时间:" + endTime);

2. 时间比较

可以通过 LocalDateTime 类提供的方法来比较时间:

// 比较当前时间与指定时间的关系
boolean isBefore = nowTime.isBefore(endTime);
System.out.println("当前时间是否比指定时间早:" + isBefore);
// 判断当前时间是否与指定时间相等
boolean equal = nowTime.equals(endTime);
System.out.println("当前时间是否与指定时间相等:" + equal);
// 判断当前时间是否比指定时间晚
boolean isAfter = nowTime.isAfter(endTime);
System.out.println("当前时间是否比指定时间晚:" + isAfter);

3. 时间获取

可以通过 LocalDateTime 类获取时间的各个部分:

// 获取时间的各个部分
int year = nowTime.getYear();
int monthValue = nowTime.getMonthValue();
int dayofMonth = nowTime.getDayOfMonth();
int hour = nowTime.getHour();
int minute = nowTime.getMinute();
int second = nowTime.getSecond();
System.out.println("获取时间:" + year + "年" + monthValue + "月" + dayofMonth + "日" + hour + "时" + minute + "分" + second + "秒");
// 获取星期几
DayOfWeek dayofWeek = nowTime.getDayOfWeek();
System.out.println("今天星期:" + dayofWeek);
// 获取当前日子为年的第几天
int dayofYear = nowTime.getDayOfYear();
System.out.println("全年第:" + dayofYear + "天");

4. 时间操作

可以通过加减方法来调整时间:

// 日期偏移操作
LocalDateTime minusYears = nowTime.minusYears(1);
System.out.println("1年前的时间:" + minusYears);
LocalDateTime plusYears = nowTime.plusYears(1);
System.out.println("1年后的时间:" + plusYears);
LocalDateTime minusMonths = nowTime.minusMonths(1);
System.out.println("1个月前的时间:" + minusMonths);
LocalDateTime plusMonths = nowTime.plusMonths(1);
System.out.println("1个月后的时间:" + plusMonths);
LocalDateTime minusWeeks = nowTime.minusWeeks(1);
System.out.println("1周前的时间:" + minusWeeks);
LocalDateTime plusWeeks = nowTime.plusWeeks(1);
System.out.println("1周后的时间:" + plusWeeks);
LocalDateTime minusDays = nowTime.minusDays(1);
System.out.println("1天前的时间:" + minusDays);
LocalDateTime plusDays = nowTime.plusDays(1);
System.out.println("1天后的时间:" + plusDays);
LocalDateTime minusHours = nowTime.minusHours(1);
System.out.println("1小时前的时间:" + minusHours);
LocalDateTime plusHours = nowTime.plusHours(1);
System.out.println("1小时后的时间:" + plusHours);
LocalDateTime minusMinutes = nowTime.minusMinutes(1);
System.out.println("1分钟前的时间:" + minusMinutes);
LocalDateTime plusMinutes = nowTime.plusMinutes(1);
System.out.println("1分钟后的时间:" + plusMinutes);
LocalDateTime minusSeconds = nowTime.minusSeconds(1);
System.out.println("1秒前的时间:" + minusSeconds);
LocalDateTime plusSeconds = nowTime.plusSeconds(1);
System.out.println("1秒后的时间:" + plusSeconds);
LocalDateTime minusTime = nowTime.minus(23, ChronoUnit.MONTHS);
System.out.println("减少23个月后的时间:" + minusTime);

5. 时间做差

可以使用 Duration 类来计算时间差:

// 计算时间差
Duration duration = Duration.between(nowTime, endTime);
// 转换为天数
long durationDays = duration.toDays();
System.out.println("时间差:" + durationDays + "天");
// 转换为小时数
long durationHours = duration.toHours();
System.out.println("时间差:" + durationHours + "小时");
// 转换为分钟数
long durationMinutes = duration.toMinutes();
System.out.println("时间差:" + durationMinutes + "分钟");
// 转换为毫秒数
long durationMillis = duration.toMillis();
System.out.println("时间差:" + durationMillis + "毫秒");
// 转换为纳秒数
long durationNanos = duration.toNanos();
System.out.println("时间差:" + durationNanos + "纳秒");

6. Period 时间差

Period 类用于表示两个日期之间的时间间隔:

// 计算时间差
Period period = Period.between(nowTime.toLocalDate(), endTime.toLocalDate());
// 获取时间差的各个部分
int periodYears = period.getYears();
System.out.println("时间差:" + periodYears + "年");
int periodMonths = period.getMonths();
System.out.println("时间差:" + periodMonths + "月");
int periodDays = period.getDays();
System.out.println("时间差:" + periodDays + "日");

7. 获得特殊时间

可以通过 LocalTime 来获取特殊时间:

// 获取当天的零点
LocalDateTime todayStart = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
System.out.println("当天零点:" + todayStart);
// 获取当天的结束时间
LocalDateTime todayEnd = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
System.out.println("当天结束时间:" + todayEnd);

8. LocalDateTime 转化

可以通过 DateTimeFormatterLocalDateTime 转换为字符串:

// LocalDateTime 转 String
String localDataTimeString = nowTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println("LocalDateTime 转 String:" + localDataTimeString);
// String 转 LocalDateTime
LocalDateTime stringLocalDataTime = LocalDateTime.parse("2017-09-28 17:07:05", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println("String 转 LocalDateTime:" + stringLocalDataTime);

9. Date 转化

可以通过 ZoneId 来将 LocalDateTime 转换为 Date

// LocalDateTime 转 Date
Date date = Date.from(nowTime.atZone(ZoneId.systemDefault()).toInstant());
LocalDateTime dateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
System.out.println("Date 转 LocalDateTime:" + dateTime);
// LocalDateTime 转 String
String dataString = nowTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println("LocalDateTime 转 String:" + dataString);

转载地址:http://frpk.baihongyu.com/

你可能感兴趣的文章
mysql 主从互备份_mysql互为主从实战设置详解及自动化备份(Centos7.2)
查看>>
mysql 主从关系切换
查看>>
MYSQL 主从同步文档的大坑
查看>>
mysql 主键重复则覆盖_数据库主键不能重复
查看>>
Mysql 事务知识点与优化建议
查看>>
Mysql 优化 or
查看>>
mysql 优化器 key_mysql – 选择*和查询优化器
查看>>
MySQL 优化:Explain 执行计划详解
查看>>
Mysql 会导致锁表的语法
查看>>
mysql 使用sql文件恢复数据库
查看>>
mysql 修改默认字符集为utf8
查看>>
Mysql 共享锁
查看>>
MySQL 内核深度优化
查看>>
mysql 内连接、自然连接、外连接的区别
查看>>
mysql 写入慢优化
查看>>
mysql 分组统计SQL语句
查看>>
Mysql 分页
查看>>
Mysql 分页语句 Limit原理
查看>>
MySql 创建函数 Error Code : 1418
查看>>
MySQL 创建新用户及授予权限的完整流程
查看>>