Java时间类

发布时间:2023年12月21日

JDK1.8之前

Date:代表日期和时间

方法作用
public Date()创建一个Date对象
public Date(long time)把时间毫秒值转换成Date日期对象
public long getTime()从1970年1月1日00:00:00走到此刻的总的毫秒数
public void setTime(long time)当前时间毫秒值对应的时间
        // 1、创建一个Date的对象:代表系统当前时间信息的。
        Date d = new Date();
        // 2、拿到时间毫秒值。
        long time = d.getTime();
        // 3、把时间毫秒值转换成日期对象: 2s之后的时间是多少。
        time +=3*1000;
        Date d2 = new Date(time);
        // 4、直接把日期对象的时间通过setTime方法进行修改
        Date d3 = new Date();
        d3.setTime(time);

SimpleDateFormat
代表简单日期格式化,可以用来把日期对象、时间毫秒值格式化成想要的形式,例如:xxxx年xx月xx日。

方法作用
public SimpleDateFormat?(String pattern)创建简单日期格式化对象,并封装时间的格式
public final String format(Date date)将日期格式化成日期/时间字符串
public final String format(Object time)将时间毫秒值式化成日期/时间字符串
        Date d = new Date();
        long time = d.getTime();
        // 格式化日期对象,和时间 毫秒值。
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EEE a");
        String rs = sdf.format(d);
        String rs2 = sdf.format(time);
        String dateStr = "2022-12-12 12:12:11";
        //创建日期格式化对象,指定的时间格式需要与被解析的时间格式一样.
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d2 = sdf2.parse(dateStr);

Calendar
代表系统此刻时间对应的日历,通过它可以单独获取、修改时间中的年、月、日、时、分、秒等。

方法作用
public static Calendar getInstance()获取当前日历对象
public int get(int field)获取日历中的某个信息
public final Date getTime()获取日期对象
public long getTimeInMillis()获取时间毫秒值
public void set(int field,int value)修改日历的某个信息
public void add(int field,int amount)为某个信息增加/减少指定的值
		// 得到系统此刻时间对应的日历对象。
        Calendar now = Calendar.getInstance();
        // 获取日历中的某个信息
        int days = now.get(Calendar.DAY_OF_YEAR);
        // 拿到日历中记录的日期对象。
        Date d = now.getTime();
        // 拿到时间毫秒值
        long time = now.getTimeInMillis();
        // 修改日历中的某个信息
        now.set(Calendar.MONTH, 9); 
        // 为某个信息增加或者减少多少
        now.add(Calendar.DAY_OF_YEAR, 100);
        now.add(Calendar.DAY_OF_YEAR, -10);
        now.set(2026, 11, 22);

JDK1.8之后

LocalDate、LocalTime、LocalDateTime
LocalDate:代表本地日期(年、月、日、星期)
LocalTime:代表本地时间(时、分、秒、纳秒)
LocalDateTime:代表本地日期、时间(年、月、日、星期、时、分、秒、纳秒)

		//获取本地日期和时间对象。
        LocalDateTime ldt = LocalDateTime.now(); // 年 月 日 时 分 秒 纳秒
        System.out.println(ldt);
        // 1、可以获取日期和时间的全部信息
        int year = ldt.getYear(); // 年
        int dayOfYear = ldt.getDayOfYear();  // 一年中的第几天
        int minute = ldt.getMinute(); //分
        int second = ldt.getSecond(); //秒
        int nano = ldt.getNano(); //纳秒
        // 2、修改时间信息:
        // withYear withMonth withDayOfMonth withDayOfYear withHour
        // withMinute withSecond withNano
        LocalDateTime ldt2 = ldt.withYear(2029);
        LocalDateTime ldt3 = ldt.withMinute(59);
        // 3、加多少:
        // plusYears  plusMonths plusDays plusWeeks plusHours plusMinutes plusSeconds plusNanos
        LocalDateTime ldt4 = ldt.plusYears(2);
        LocalDateTime ldt5 = ldt.plusMinutes(3);
        // 4、减多少:
        // minusDays minusYears minusMonths minusWeeks minusHours minusMinutes minusSeconds minusNanos
        LocalDateTime ldt6 = ldt.minusYears(2);
        LocalDateTime ldt7 = ldt.minusMinutes(3);
        // 5、获取指定日期和时间的LocalDateTime对象:
        //public static LocalDateTime of(int year,int month, int dayOfMonth, int hour,int minute, int second, int nanoOfSecond)
        LocalDateTime ldt8 = LocalDateTime.of(2029, 12, 12, 12, 12, 12, 1222);
        LocalDateTime ldt9 = LocalDateTime.of(2029, 12, 12, 12, 12, 12, 1222);
        // 6、 判断2个日期、时间对象,是否相等,在前还是在后: equals、isBefore、isAfter
        System.out.println(ldt9.equals(ldt8));
        System.out.println(ldt9.isAfter(ldt));
        System.out.println(ldt9.isBefore(ldt));
        // 7、可以把LocalDateTime转换成LocalDate和LocalTime
        // public LocalDate toLocalDate()
        // public LocalTime toLocalTime()
        // public static LocalDateTime of(LocalDate date, LocalTime time)
        LocalDate ld = ldt.toLocalDate();
        LocalTime lt = ldt.toLocalTime();
        LocalDateTime ldt10 = LocalDateTime.of(ld, lt);

Instant
通过获取Instant的对象可以拿到此刻的时间,由两部分组成:从1970-01-01 00:00:00 开始走到此刻的总秒数 + 不够1秒的纳秒。

方法作用
public static Instant now?()获取当前时间的Instant对象(标准时间)
public long getEpochSecond()获取从1970-01-01T00:00:00开始记录的秒数
public int getNano()从时间线开始,获取从第二个开始的纳秒数
plusMillis plusSeconds plusNanos增加时间系列的方法
minusMillis minusSeconds minusNanos减少时间系列的方法
equals、isBefore、isAfter判断系列的方法
		// 1、创建Instant的对象,获取此刻时间信息
        Instant now = Instant.now(); // 不可变对象
        // 2、获取总秒数
        long second = now.getEpochSecond();
        // 3、不够1秒的纳秒数
        int nano = now.getNano();
        Instant instant = now.plusNanos(111);

DateTimeFormatter
格式化器,用于时间的格式化、解析

方法作用
public static DateTimeFormatter ofPattern(时间格式)获取格式化器对象
public String format(时间对象)格式化时间
public String format(DateTimeFormatter formatter)格式化时间
public static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter)解析时间
		// 1、创建一个日期时间格式化器对象出来。
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
        // 2、对时间进行格式化
        LocalDateTime now = LocalDateTime.now();
        String rs = formatter.format(now); // 正向格式化
        System.out.println(rs);
        // 3、格式化时间,还有一种方案。
        String rs2 = now.format(formatter); // 反向格式化
        System.out.println(rs2);
        // 4、解析时间:解析时间一般使用LocalDateTime提供的解析方法
        String dateStr = "2029年12月12日 12:12:11";
        LocalDateTime ldt = LocalDateTime.parse(dateStr, formatter);
        System.out.println(ldt);

来源:B站黑马大学

文章来源:https://blog.csdn.net/weixin_42592415/article/details/135127895
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。