欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JDK1.8时间工具类

程序员文章站 2024-02-29 18:36:22
...

JDK1.8时间工具类

一、特点:比起Date类和Calendar类,jdk1.8的时间类更全面、线程安全、可修改

二、JDK1.8各时间类特点及应用

2.1、LocalDate类
 //取当前日期
LocalDate today=LocalDate.now();
System.out.println("today = " + today);
输出:today = 2020-11-24
 //取当前日期
 LocalDate today=LocalDate.now();
 //获取当前是一周的第几天
 int dayOfWeek = today.getDayOfWeek().getValue();
 System.out.println("dayOfWeek = " + dayOfWeek);
 //获取当前日
 int dayOfMonth = today.getDayOfMonth();
 System.out.println("dayOfMonth = " + dayOfMonth);
 //获取当前是一年中的第几天
 int dayOfYear = today.getDayOfYear();
 System.out.println("dayOfYear = " + dayOfYear);
 //获取当前月
 int monthValue = today.getMonthValue();
 System.out.println("monthValue = " + monthValue);
 //获取当前年
 int year = today.getYear();
 System.out.println("year = " + year);
输出:
dayOfWeek = 2
dayOfMonth = 24
dayOfYear = 329
monthValue = 11
year = 2020
 //根据年月日取日期,12月就是12月,月份不需要像date和calendar类0-11
 LocalDate myDate = LocalDate.of(2020, 11, 11);
 System.out.println("myDate = " + myDate);
输出:myDate = 2020-11-11
 //根据字符串取1:(必须严格按照格式:yyyy-MM-dd)
LocalDate parseStr1 = LocalDate.parse("2020-11-24");
System.out.println("parseStr1 = " + parseStr1);
输出:parseStr1 = 2020-11-24
 //根据字符串取2:(自定义格式)
LocalDate parseStr2 = LocalDate.parse("2020/08/02", DateTimeFormatter.ofPattern("yyyy/MM/dd"));
System.out.println("parseStr2 = " + parseStr2);
输出:parseStr2 = 2020-08-02
//取本月第一天
LocalDate firstDayOfMonth = today.with(TemporalAdjusters.firstDayOfMonth());
System.out.println("firstDayOfMonth = " + firstDayOfMonth);
输出:firstDayOfMonth = 2020-11-01
//取本月第2天:
LocalDate secondDayOfMonth = today.withDayOfMonth(2);
System.out.println("secondDayOfMonth = " + secondDayOfMonth);
输出:secondDayOfMonth = 2020-11-02
//取本月最后一天
LocalDate lastDayOfMonth = today.with(TemporalAdjusters.lastDayOfMonth());
System.out.println("lastDayOfMonth = " + lastDayOfMonth);
输出:lastDayOfMonth = 2020-11-30
 //取下一天
LocalDate tomorrow = lastDayOfMonth.plusDays(1);
System.out.println("tomorrow = " + tomorrow);
输出:tomorrow = 2020-12-01
 //取2020年11月第一个周一
LocalDate firstMondayOf2020 = LocalDate.parse("2020-11-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));
System.out.println("firstMondayOf2020 = " + firstMondayOf2020);
输出:firstMondayOf2020 = 2020-11-02
//几个使用方法
LocalDate today = LocalDate.now();

//判断 today 是否为闰年
boolean isLeapYear = today.isLeapYear();
System.out.println("isLeapYear = " + isLeapYear);

//获取 today 是该年的第几季度
int quarterOfYear = today.get(IsoFields.QUARTER_OF_YEAR);
System.out.println("quarterOfYear = " + quarterOfYear);

//获取 today 是该季度的第几天
int daysOfQuarter = today.get(IsoFields.DAY_OF_QUARTER);
System.out.println("daysOfQuarter = " + daysOfQuarter);
输出:
isLeapYear = true
quarterOfYear = 4
daysOfQuarter = 55
2.2、LocalTime类
//获取当前时间(带有毫秒)
LocalTime timeMills = LocalTime.now();
System.out.println("timeMills = " + timeMills);
//在timeMills的基础上获取不带毫秒的time
//nanoSecond纳秒,十亿分之一秒
LocalTime time1 = timeMills.withNano(0);
System.out.println("time1 = " + time1);

//设置并得到时间对象
LocalTime time2 = LocalTime.of(12, 00, 00);
System.out.println("time2 = " + time2);

//解析时间字符串
LocalTime parseStr1 = LocalTime.parse("12:30:00");
System.out.println("parseStr1 = " + parseStr1);
LocalTime parseStr2 = LocalTime.parse("12时30分00秒", DateTimeFormatter.ofPattern("HH时mm分ss秒"));
System.out.println("parseStr2 = " + parseStr2);

//获取一天的第多少秒的时间对象
LocalTime time3 = LocalTime.ofSecondOfDay(18 * 60 * 60 + 60 * 30);
System.out.println("time3 = " + time3);

//MIN、MAX、 NOON、 MIDNIGHT
//MIN和MIDNIGHT都是00:00,意味一天的开始
//NOON是中午12:00,意味着半天
//MAX是23:59:59.999999999,意味着一天的结束
System.out.println("MIN = " + LocalTime.MIN);
System.out.println("MIDNIGHT = " + LocalTime.MIDNIGHT);
System.out.println("NOON = " + LocalTime.NOON);
System.out.println("MAX = " + LocalTime.MAX);
输出:
timeMills = 22:58:55.326
time1 = 22:58:55
time2 = 12:00
parseStr1 = 12:30
parseStr2 = 12:30
time3 = 18:30
MIN = 00:00
MIDNIGHT = 00:00
NOON = 12:00
MAX = 23:59:59.999999999
//获取当前时间(带有毫秒)
LocalTime timeMills = LocalTime.now();
System.out.println("timeMills = " + timeMills);
//在timeMills的基础上获取不带毫秒的time
//nanoSecond纳秒,十亿分之一秒
LocalTime time = timeMills.withNano(0);
System.out.println("time = " + time);

//获取时
int hour = time.getHour();
System.out.println("hour = " + hour);
//获取分
int minute = time.getMinute();
System.out.println("minute = " + minute);
//获取秒
int second = time.getSecond();
System.out.println("second = " + second);

//下班时间
LocalTime workOver = LocalTime.of(18, 30, 00);

//睡觉时间
LocalTime sleepTime = LocalTime.of(23, 30, 00);

//判断现在是否是下班时间
boolean after = time.isAfter(workOver);
System.out.println("after = " + after);
//判断现在是否是睡觉时间
boolean before = time.isBefore(sleepTime);
System.out.println("before = " + before);

//现在和下班时间比较
int i = time.compareTo(workOver);
System.out.println("i = " + i);
//现在和睡觉时间比较
int j = time.compareTo(sleepTime);
System.out.println("j = " + j);

//获取离现在1个半小时的时间
LocalTime time2 = time.plusHours(1).plusMinutes(30);
System.out.println("time2 = " + time2);
输出:
timeMills = 23:11:22.379
time = 23:11:22
hour = 23
minute = 11
second = 22
after = true
before = true
i = 1
j = -1
time2 = 00:41:22
相关标签: java jdk