Java 8中的日期函数,主要是基于 ISO标准日历系统,java.time 包下的所有类都是不可变类型,且线程安全,现在就日期处理的常用功能代码总结如下。
获得当前日期
/**
* 获得当前日期
*/
@Test
public void testGetToday(){
LocalDate localDate=LocalDate.now();
System.out.println("当前日期:"+localDate);
//执行结果:
// 当前日期:2022-09-13
}
获得 年、月、日部分
/**
* 获得 年 月 日部分
*/
@Test
public void testGetYearMonthDay(){
LocalDate localDate=LocalDate.now();
int year= localDate.getYear();
int month=localDate.getMonthValue();
int day=localDate.getDayOfMonth();
System.out.println("年:"+year);
System.out.println("月:"+month);
System.out.println("日:"+day);
// 执行结果:
// 年:2022
// 月:9
// 日:13
}
设置特定日期
/**
* 设置特定日期
*/
@Test
public void testSetDefaultDate(){
LocalDate localDate=LocalDate.of(2021,10,1);
System.out.println("2021国庆:"+localDate);
// 执行结果:
// 2021国庆:2021-10-01
}
判断日期是否相等
/**
* 日期判断相等
*/
@Test
public void testDateEquals(){
LocalDate localDateFirst=LocalDate.of(2021,10,1);
LocalDate localDateSencond=LocalDate.of(2021,10,1);
LocalDate localDateThird=LocalDate.of(2020,11,1);
System.out.println(" localDateFirst == localDateSencond :"+localDateFirst.equals(localDateSencond));
System.out.println(" localDateFirst == localDateThird :"+localDateFirst.equals(localDateThird));
//执行结果:
// localDateFirst == localDateSencond :true
// localDateFirst == localDateThird :false
}
判断今天是否是小张、小明的生日
/**
* 判断今天是否是小张、小明的生日
*/
@Test
public void testBirthdayEquals(){
// 今天日期
LocalDate localDate=LocalDate.now();
System.out.println("当前日期:"+localDate);
// 小明的生日:包含月和日的对象
MonthDay xiaomingBirthday=MonthDay.of(9,13);
// 小张的生日:包含月和日的对象
MonthDay xiaozhangBirthday=MonthDay.of(8,11);
// 当前日期对象的MonthDay对象
MonthDay todayMonthDay=MonthDay.from(localDate);
if (todayMonthDay.equals(xiaomingBirthday)){
System.out.println("今天是小明的生日");
}else{
System.out.println("今天不是小明的生日");
}
if (todayMonthDay.equals(xiaozhangBirthday)){
System.out.println("今天是小张的生日");
}else{
System.out.println("今天不是小张的生日");
}
// 执行结果:
// 当前日期:2022-09-13
// 今天是小明的生日
// 今天不是小张的生日
}
日期计算(明年、下个月、下周、明天,去年、上个月、上周、昨天)
/**
* 日期计算(明年,下个月、下周、明天,去年、上个月、上周、昨天)
*/
@Test
public void testCalcLocalDate(){
LocalDate localDate=LocalDate.now();
System.out.println("当前日期:"+localDate);
LocalDate nextYear=localDate.plusYears(1);
System.out.println("明年:"+nextYear);
LocalDate preYear=localDate.plusYears(-1);
System.out.println("去年:"+preYear);
LocalDate nextMonth=localDate.plusMonths(1);
System.out.println("下个月:"+nextMonth);
LocalDate preMonth=localDate.plusMonths(-1);
System.out.println("上个月:"+preMonth);
LocalDate nextWeek=localDate.plusWeeks(1);
System.out.println("下周:"+nextWeek);
LocalDate preWeek=localDate.plusWeeks(-1);
System.out.println("上周:"+preWeek);
LocalDate nextDay=localDate.plusDays(1);
System.out.println("明天:"+nextDay);
LocalDate preDay=localDate.plusDays(-1);
System.out.println("昨天:"+preDay);
//执行结果:
//当前日期:2022-09-13
//明年:2023-09-13
//去年:2021-09-13
//下个月:2022-10-13
//上个月:2022-08-13
//下周:2022-09-20
//上周:2022-09-06
//明天:2022-09-14
//昨天:2022-09-12
}
@Test
public void testCalcDateDiff(){
LocalDate localDate1=LocalDate.of(2022,9,13);
LocalDate localDate2=LocalDate.of(2020,8,13);
Period period= Period.between(localDate1,localDate2);
System.out.println("相差天数:"+period.getDays());
System.out.println("相差月数:"+period.getMonths());
}
计算日期相差天数
/**
* 计算日期相差天数
*/
@Test
public void testLocadateDifferDays(){
LocalDateTime localDateTimeStart=LocalDateTime.of(2020,8,12,0,0,0);
System.out.println("开始日期:"+localDateTimeStart);
LocalDateTime localDateTimeEnd=LocalDateTime.of(2022,9,15,0,0,0);
System.out.println("结束日期:"+localDateTimeEnd);
Duration duration =Duration.between(localDateTimeStart,localDateTimeEnd);
System.out.println("相差绝对天数:"+duration.toDays());
//执行结果:
//开始日期:2020-08-12T00:00
//结束日期:2022-09-15T00:00
//相差绝对天数:764
}
计算日期相差月数
/**
* 计算日期相差月数
*/
@Test
public void testLocadateDifferMonth(){
LocalDate localDateStart=LocalDate.of(2020,8,12);
System.out.println("开始日期:"+localDateStart);
LocalDate localDateEnd=LocalDate.of(2022,9,15);
System.out.println("结束日期:"+localDateEnd);
Period period =Period.between(localDateStart,localDateEnd);
System.out.println("相差绝对月数:"+period.toTotalMonths());
//执行结果
//开始日期:2020-08-12
//结束日期:2022-09-15
//相差绝对月数:25
}
字符串转成日期对象、字符串转日期时间对象
/**
* 字符串转成日期对象、字符串转日期时间对象
*/
@Test
public void testStringToDate() {
String datestr="2022-08-11";
//字符串转成日期时间对象
LocalDate localDate=LocalDate.parse(datestr, DateTimeFormatter.ISO_LOCAL_DATE);
System.out.println(localDate);
datestr="2022-08-11T14:22:33";
//字符串转成日期对象
LocalDateTime localDateTime=LocalDateTime.parse(datestr, DateTimeFormatter.ISO_LOCAL_DATE_TIME);
System.out.println(localDateTime);
//执行结果
//2022-08-11
//2022-08-11T14:22:33
}
LocalDate、LocalDateTime 格式化字符串
/**
* LocalDate、LocalDateTime 格式化字符串
*/
@Test
public void testDateToString(){
LocalDate localDate=LocalDate.now();
DateTimeFormatter dateTimeFormatter=DateTimeFormatter.ofPattern("yyyy-MM-dd");
//日期格式化字符串
String datestr= dateTimeFormatter.format(localDate);
System.out.println(datestr);
LocalDateTime localDateTime=LocalDateTime.now();
dateTimeFormatter=DateTimeFormatter.ofPattern("yyyy-MM-dd:HH:mm:ss");
//日期时间格式话字符串
String datetimestr=dateTimeFormatter.format(localDateTime);
System.out.println(datetimestr);
//执行结果:
//2021-09-13
//2022-09-13:14:36:30
}
相关文章
了解千锋动态
关注千锋教育服务号
扫一扫快速进入
千锋移动端页面
扫码匿名提建议
直达CEO信箱