Java日期18个示例

本文详细介绍了Java日期处理的18个关键示例,包括获取当前日期、判断日期相等、计算日期差、处理时区、检查闰年以及字符串与日期的转换等。所有示例均基于java.time包,该包中的类为不可变类型且线程安全,提高了编程效率和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java.time包下的所有类都是不可变类型而且线程安全, java.util.Date设定为可变类型,以及SimpleDateFormat的非线程安全使其应用非常受限

编号类的名称描述
1Instant时间戳
2Duration持续时间,时间差
3LocalDate只包含日期,例如2020-05-04
4LocalTime只包含时间,例如23:12:10
5LocalDateTime包含日期和时间,例如2020-05-04 23:12:10
6Period时间段
7ZonedOffset时区偏移量,例如+8:00
8ZonedDateTime带时区的时间
9Clock时钟,获取当前北京时间

示例1:获取今天的日期

只有日期,不包含时间

LocalDate today = LocalDate.now();
System.out.println("今天的日期:"+today);//今天的日期:2022-06-01

示例2:获取年、月、日信息

LocalDate today = LocalDate.now();
int year = today.getYear();
int month = today.getMonthValue();
int day = today.getDayOfMonth();

System.out.println("year:"+year);//year:2022
System.out.println("month:"+month);//month:6
System.out.println("day:"+day);//day:1

示例3:处理特定日期

LocalDate date = LocalDate.of(2022,6,1);
System.out.println("自定义日期:"+date);//自定义日期:2022-06-01

示例4:判断两个日期是否相等

LocalDate date1 = LocalDate.now();

LocalDate date2 = LocalDate.of(2022,6,1);

if(date1.equals(date2)){
    System.out.println("时间相等");
}else{
    System.out.println("时间不等");
}

示例5:检查像生日这种周期性事件

LocalDate date1 = LocalDate.now();

LocalDate date2 = LocalDate.of(2022,6,1);
MonthDay birthday = MonthDay.of(date2.getMonth(),date2.getDayOfMonth());
MonthDay currentMonthDay = MonthDay.from(date1);

if(currentMonthDay.equals(birthday)){
    System.out.println("是你的生日");
}else{
    System.out.println("你的生日还没有到");
}

示例6:获取当前时间

LocalTime time = LocalTime.now();
System.out.println("获取当前的时间,不含有日期:"+time);//获取当前的时间,不含有日期:15:08:58.332

示例7:中获取当前时间

LocalTime time = LocalTime.now();
LocalTime newTime = time.plusHours(3);
System.out.println("三个小时后的时间为:"+newTime);三个小时后的时间为:18:09:29.957

示例8:如何计算一周后的日期

LocalDate today = LocalDate.now();
System.out.println("今天的日期为:"+today);//今天的日期为:2022-06-01
LocalDate nextWeek = today.plus(1, ChronoUnit.WEEKS);
System.out.println("一周后的日期为:"+nextWeek);//一周后的日期为:2022-06-08

示例9:计算一年前或一年后的日期

LocalDate today = LocalDate.now();

LocalDate previousYear = today.minus(1, ChronoUnit.YEARS);
System.out.println("一年前的日期 : " + previousYear);//一年前的日期 : 2021-06-01

LocalDate nextYear = today.plus(1, ChronoUnit.YEARS);
System.out.println("一年后的日期:"+nextYear);//一年后的日期:2023-06-01

示例10:Clock时钟类

Clock clock = Clock.systemUTC();
System.out.println("Clock : " + clock.millis());//Clock : 1654067470198

Clock defaultClock = Clock.systemDefaultZone();
System.out.println("Clock : " + defaultClock.millis());//Clock : 1654067470260

示例11:如何用Java判断日期是早于还是晚于另一个日期

LocalDate today = LocalDate.now();

LocalDate tomorrow = LocalDate.of(2022,6,1);
if(tomorrow.isAfter(today)){
    System.out.println("之后的日期:"+tomorrow);
}

LocalDate yesterday = today.minus(1, ChronoUnit.DAYS);
if(yesterday.isBefore(today)){
    System.out.println("之前的日期:"+yesterday);//之前的日期:2022-05-31
}

示例12:处理时区

ZoneId america = ZoneId.of("America/New_York");
LocalDateTime localtDateAndTime = LocalDateTime.now();
ZonedDateTime dateAndTimeInNewYork  = ZonedDateTime.of(localtDateAndTime, america );
System.out.println("特定时区中的当前日期和时间: " + dateAndTimeInNewYork);
//特定时区中的当前日期和时间: 2022-06-01T15:13:59.227-04:00[America/New_York]

示例13:如何表示信用卡到期这类固定日期,答案就在YearMonth

YearMonth currentYearMonth = YearMonth.now();
System.out.printf("年月天数 %s: %d%n", currentYearMonth, currentYearMonth.lengthOfMonth());
//年月天数 2022-06: 30
YearMonth creditCardExpiry = YearMonth.of(2019, Month.FEBRUARY);
System.out.printf("您的信用卡于 %s 到期", creditCardExpiry);//您的信用卡于 2019-02 到期

示例13:检查闰年

LocalDate today = LocalDate.now();
if(today.isLeapYear()){
    System.out.println("今年是闰年");
}else {
    System.out.println("2022年不是闰年");//2022年不是闰年
}

示例15:计算两个日期之间的天数和月数

LocalDate today = LocalDate.now();

LocalDate java8Release = LocalDate.of(2022, 7, 1);

Period periodToNextJavaRelease = Period.between(today, java8Release);
System.out.println("从7月1日到今天还有几个月 : "+ periodToNextJavaRelease.getMonths());
//从7月1日到今天还有几个月 : 1

示例16:获取当前的时间戳

Instant timestamp = Instant.now();
System.out.println("瞬间值是 " + timestamp.toEpochMilli());//瞬间值是 1654068000333

示例17:如何使用预定义的格式化工具去解析或格式化日期

String dayAfterTommorrow = "20220601";
LocalDate formatted = LocalDate.parse(dayAfterTommorrow,
DateTimeFormatter.BASIC_ISO_DATE);
System.out.println(dayAfterTommorrow+"  格式化后的日期为:  "+formatted);
//20220601  格式化后的日期为:  2022-06-01

示例18:字符串互转日期类型

LocalDateTime date = LocalDateTime.now();

DateTimeFormatter format1 = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
//日期转字符串
String str = date.format(format1);

System.out.println("日期转换为字符串:"+str);//日期转换为字符串:2022/06/01 15:21:27

DateTimeFormatter format2 = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
//字符串转日期
LocalDate date2 = LocalDate.parse(str,format2);
System.out.println("日期类型:"+date2);//日期类型:2022-06-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丶橙七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值