Java 8 的日期时间工具

本文详细介绍了Java 8中为了解决旧版日期时间问题而引入的LocalDate、LocalTime和LocalDateTime类型。LocalDate提供获取当前日期、增加减少日期以及判断日期关系的方法;LocalTime处理时分秒,同样支持日期调整;LocalDateTime结合了两者,提供了丰富的操作。Java 8还引入了DateTimeFormatter替代SimpleDateFormat,方便进行日期时间与字符串的转换。
摘要由CSDN通过智能技术生成


之前有谈过Java的两套时间工具,分别是 Date日期类型和Calendar日历类型,但仍在开发中存在问题:

  • 日历工具获得当月份的时候,与Date一样都是从0开始计数,比如通过get方法获得一月份数值为0;
  • 日历工具获得当天是星期几的时候,星期日是排在最前面的,通过get方法获得的星期日数值为1,而星期一数值居然为2;
  • 日历工具能够表达的最小世界单位是毫秒,精度不高;
  • 日历工具没有提供闰年判断方法;
  • 日历工具缺乏自己的格式,还得借助Date类型的格式化工具SimpleDateFormat,才能将日期时间按照指定格式输出为字符串。

为解决以上问题,Java 8 提供了全新的本地日期时间类型,它的成员主要有LocalDate、LocalTime、LocalDateTime等。

1. LocalDate 和 LocalTime

1.1 本地日期类型LocalDate

import java.time.LocalDate;

获得本地日期实例很简单,就直接调用该类型的now方法,顾名思议就是获得当前日期,很符合我们常理,且还额外提供了几个常用的统计方法。

注意:

  • getMonth() 返回的是英文月份,而 getMonthValue() 返回的是数字月份!

import java.time.Month;

  • getDayOfWeek() 返回的是英文星期,而后面加了getValue() 才返回数字星期几!

import java.time.DayOfWeek;

【代码】

	// LocalDate的各种方法
		LocalDate date = LocalDate.now();// 获得本地日期的实例
		System.out.println("date:" + date.toString());
		int year = date.getYear(); // 获得该日期所在的年份
		System.out.println("year:" + year);
		
		//注意区分getMonth()返回的是英文月份,而getMonthValue()返回的是数字月份!
		int month1 = date.getMonthValue();
		Month month2 = date.getMonth();
		System.out.println("month:" + month1 + '\t' + month2);
		int dayOfYear = date.getDayOfYear();
		System.out.println("day:" + dayOfYear);
		
		//注意区分getDayOfWeek()返回的是英文星期,而后面加了getValue()才返回数字星期几!
		int dayOfWeek1 = date.getDayOfWeek().getValue();
		DayOfWeek dayOfWeek2 = date.getDayOfWeek();
		System.out.println("week:" + dayOfWeek1 + '\t' + dayOfWeek2);
		int lengthOfYear = date.lengthOfYear();
		System.out.println("lengthOfYear:" + lengthOfYear);
		int lengthOfMonth = date.lengthOfMonth();
		System.out.println("lengthOfMonth:" + lengthOfMonth);
		boolean isLeapYear = date.isLeapYear();// 判断该日期所在的年份是否为闰年
		System.out.println("isLeapYear:" + isLeapYear);

private static void showLocalDate() {
   
		LocalDate date = LocalDate.now(); // 获得本地日期的实例
		System.out.println("date=" + date.toString());
		int year = date.getYear(); // 获得该日期所在的年份
		System.out.println("year=" + year);
		// 获得该日期所在的月份。注意getMonthValue返回的是数字月份,getMonth返回的是英文月份
		int month = date.getMonthValue();
		System.out.println("month=" + month + ", english month=" + date.getMonth());
		
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

涛涛同学debug

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

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

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

打赏作者

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

抵扣说明:

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

余额充值