Java日期类相关的处理

  • 1.System获取时间戳
  • 2.Date类
  • - 获取当前时间
  • - 获取当前时间的时间戳,返回值单位毫秒
  • - 日期的格式化和解析
  • - 求日期差
  • 3.Calendar类
  • 常用方法:
  • 4.LocalTime,LocalDate,LocalDateTime
  • 常用方法:



本文介绍日期相关的常用方法,简洁实用,快速上手

1.System获取时间戳

获取当前时间戳,返回值单位为毫秒,表示当前日期与UTC时间1970年1月1日的差值

long l = System.currentTimeMillis();

2.Date类

首先Date类中的许多方法都已过时,在生产中建议使用jdk1.8后支持的日期类,后文介绍

- 获取当前时间

Date date = new Date();

- 获取当前时间的时间戳,返回值单位毫秒

long time = date.getTime();

- 日期的格式化和解析

格式化即为将日期对象---->字符串,解析为字符串---->日期对象

  • 指定格式
//HH和hh区别在于是12小时制还是24小时制
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
//只要年月日,其他同理,根据需求规定格式
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd");
  • 格式化,获取到对应的string对象
String format = sdf.format(new Date());
  • 解析
Date parse = sdf.parse("2021-03-08 17:39:30");

需要注意的是:解析式传入的字符串必须和创建sdf规定的格式一致

- 求日期差

获取两个日期的时间戳,/1000转化为秒,/60转化为分钟,/60转化为小时,/24转化为天数,通常除不尽,如果取整,一般来说结果+1

Date date = new Date();
        Date date1 = new Date();
        long time = date.getTime();
        long time1 = date1.getTime();
        long days = (time1-time)/(1000*60*60*24)+1;

3.Calendar类

Calendar类是抽象类,无法实例化,通过创建子类实例化对象或者通过静态方法创建对象,通常使用后者

Calendar calendar= Calendar.getInstance();

常用方法:

注意:获取星期时:周日是1,周六是7,获取月份时,从0开始计数

int year =calendar.get(Calendar.YEAR);

        int month=calendar.get(Calendar.MONTH)+1;

        int day =calendar.get(Calendar.DAY_OF_MONTH);

        int hour =calendar.get(Calendar.HOUR_OF_DAY);

        int minute =calendar.get(Calendar.MINUTE);

        int seconds =calendar.get(Calendar.SECOND);

除此之外,Calendar 还提供了一系列 set 方法来允许我们动态设置时间,还可以使用 add 等方法进行日期的加减。可以查看对应的api文档

4.LocalTime,LocalDate,LocalDateTime

LocalTime获取当前时间,LocalDate获取当前日期,LocalDateTime获取当前日期时间,LocalDateTime常用,下文以它为例,其余两者相同

常用方法:

  • 获取当前时间
LocalDateTime now = LocalDateTime.now();
  • 格式化与解析
    同Date中的SimpleDateFormat类似,可以通过DateTimeFormatter来指定格式话时间:

指定格式,同上

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

格式化

String format = dtf.format(LocalDateTime.now());

解析

TemporalAccessor parse = dtf.parse("2021-03-08 18:04:01");

同上注意解析时传入的字符串和指定的格式对应

  • 获取凌晨时间(最大时间和最小时间)
LocalDate now = LocalDate.now();
	    LocalTime max = LocalTime.MAX;
        LocalTime min = LocalTime.MIN;
        LocalDateTime of = LocalDateTime.of(now, max);
        LocalDateTime of1 = LocalDateTime.of(now, min);

java生成全年的节假日_java生成全年的节假日

本文只是介绍了相关的常用方法,关于详细方法请食用相关api文档