java日期类

  • Date类
  • Calendar类
  • SimpleDateFormat类
  • 新增日期时间类-LocalDateTime
  • 新增的日期时间格式化类-DateTimeFormatter


Date类

Date类是我们常用的一个日期和时间的对象,用于记录某一个含日期的、精确到毫秒的时间,此类在 java.util 包中,并不是java.sql中的Date

常用的构造方法:

  1. Date();
    使用当前日期和时间初始化对象。
  2. Date(long date);
    接收一个参数创建对象,该参数是从1970年1月1日起的毫秒数。

常用的方法:

  1. getYear();
    返回年份,使用时需要加上1900。
  2. getMonth();
    返回月份,范围是0~11,使用时需要加1。
  3. getDate();
    返回日。
  4. getTime();
    返回自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。
  5. toGMTString();
    转换成GMT时区。
  6. toLocaleString();
    转换成本地时区。

示例:

Date date = new Date();
System.out.println(date);	//Wed Aug 26 09:16:41 CST 2020
Date date2 = new Date(System.currentTimeMillis());	//Wed Aug 26 09:16:41 CST 2020
System.out.println(date2);
System.out.println(date.getYear() + 1900);	//年份  必须加上1900
System.out.println(date.getMonth() + 1);	//月份  范围0~11  必须加上1
System.out.println(date.getDate());			//日  范围1~31 不加1
//返回自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数
System.out.println(date.getTime());	//1598404601154
//转换成 String
System.out.println(date.toString());//Wed Aug 26 09:16:41 CST 2020
//转换成GMT时区
System.out.println(date.toGMTString());//26 Aug 2020 01:16:41 GMT
//转换成本地时区
System.out.println(date.toLocaleString());//2020-8-26 9:16:41

Calendar类

java.util.Calendar

日历类Calendar更多的是代表年 月 日 周 星期 上午 下午 夏时令等这样内容

通过Calendar.getInstance()方法得到实例。

通过get(int field)方法获取所需要的时间信息,参数是该类中的一些静态成员变量,比如YEAR、MONTH、DAY_OF_MONTH、HOUR 、MINUTE、SECOND

示例:

//获取实例
Calendar calendar = Calendar.getInstance();
//年份
System.out.println(calendar.get(Calendar.YEAR));	
//月份
System.out.println(calendar.get(Calendar.MONTH) + 1);
//该月中的第多少天
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
//该年中的是第多少天
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));
//时
System.out.println(calendar.get(Calendar.HOUR));
//分
System.out.println(calendar.get(Calendar.MINUTE));
//秒
System.out.println(calendar.get(Calendar.SECOND));

SimpleDateFormat类

java.text.SimpleDateFormat

格式化输出日期,此类提供了一些预定义字符串或者称之为占位符:
yyyy:年
MM:月
dd: 日
HH: 小时
mm: 分钟
ss: 秒

示例:

Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(date));

新增日期时间类-LocalDateTime

  1. LocalDate类-本地日期类
LocalDate d = LocalDate.now();	//当前日期
  1. LocalTime类-本地时间类
LocalTime t = LocalTime.now();	//当前时间
  1. LocalDateTime类-本地日期时间类
LocalDateTime dt = LocalDateTime.now();	//当前日期和时间

另外一种比较规范的用法:

LocalDateTime dt = LocalDateTime.now();	//当前日期和时间
LocalDate d = dt.toLocalDate();	//转换到当前日期
LocalTime t = dt.toLocalTime();	//转换到当前时间

获取年月日时分秒的用法:

System.out.println(dt.getYear()); //年
System.out.println(dt.getMonth()); //月
System.out.println(dt.getDayOfYear()); //一年中的第几天
System.out.println(dt.getDayOfMonth()); //一月中的第几天
System.out.println(dt.getDayOfWeek()); //一周中的第几天
System.out.println(dt.getHour()); //时
System.out.println(dt.getMinute()); //分
System.out.println(dt.getSecond()); //秒

根据指定的日期时间创建对象的用法:

LocalDate date = LocalDate.of(2020, 8, 26);	//2020-08-26
LocalTime time = LocalTime.of(1, 2, 3);		//01:02:03
LocalDateTime dateTime1 = LocalDateTime.of(2020, 8, 26, 1, 2, 3);
LocalDateTime dateTime2 = LocalDateTime.of(date, time);

根据标准格式创建对象的用法:

ISO 8601规定的日期和时间格式

getDay不准 java java date getdate_System

LocalDateTime dateTime = LocalDateTime.parse("2020-08-26T01:02:03");
LocalDate date = LocalDate.parse("2020-08-26");
LocalTime time = LocalTime.parse("01:02:03");

新增的日期时间格式化类-DateTimeFormatter

如果要自定义输出的格式,或者要把一个非ISO 8601格式的字符串解析成LocalDateTime,可以使用新的DateTimeFormatter:

//自定义格式化
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd  HH:mm:ss");
System.out.println(dtf.format(LocalDateTime.now()));
		
//用自定义格式解析
LocalDateTime dt = LocalDateTime.parse("2020/08/26  10:19:39", dtf);
System.out.println(dt);