生活中的时间

  1. 北京时间需要在世界标准1时间上加8小时
  2. 1秒 = 1000毫秒
  3. 计算机中的时间原点为:1970年1月1日00:00:00

    Date类的构造方法

    Date date1 = new Date(); 把当前时间(计算机系统时间)封装成一个Date对象
    Date date2 = new Date(0L);把从时间原点开始,过了指定毫秒的时间,封装成一个Date对象,需要考虑时差问题

    Date类的常用方法

    | 方法名 | 说明 | | —- | —- | | public long getTime() | 获取时间对象的毫秒值 | | public void setTime(long time) | 设置时间,传递毫秒值 |

SimpleDateFormat类

概述:SimpleDateFormat可以对Date对象,进行格式化和解析
格式化:Date对象 ➡️ 2020年1月1日 00:00:00
解析:2020年1月1日 00:00:00 ➡️ Date对象
常用模式字母及对应关系如下:

  • y 年
  • M 月
  • d 日
  • H 时
  • m 分
  • s 秒

例子:2020-11-11 00:00:00 对应 yyyy-MM-dd HH:mm:ss

方法名 说明
public SimpleDateFormat() 构造一个SimpleDateFormat,使用默认格式
public SimpleDateFormat(String pattern) 构造一个SimpleDateFormat,使用指定的格式

SimpDateFormat小结

  1. 格式化(从date到String)public final String format(Date date):把时间按照固定格式进行展示
  2. 解析(从String到Date)public Date parse(String source):需要对时间进行计算的时候使用

    JDK8时间类

    LocalDateTime创建方法

    | 方法名 | 说明 | | —- | —- | | public static localDateTime now() | 获取当前系统时间 | | public static LocalDateTime of(年,月,日,时,分,秒) | 使用指定年月日和时分秒初始化一个LocalDateTime对象 |

LocalDateTime获取方法

方法名 说明
public int getYear() 获取年
public int getMonthValue() 获取月份(1-12)
public int getDayOfMonth() 获取月份中的第几天(1-31)
public int getDayOfYear() 获取一年中的第几天(1-366)
public DayOfWeek getDayofWeek() 获取星期
public int getMinute() 获取分钟
public int getHour() 获取小时

LocalDateTime转换方法

方法名 说明
public LocalDate toLocalDate() 转换成为一个LocalDate对象
public LocalTime toLocalTime() 转换成为一个LocalTime对象

LocalDateTime格式化和解析

方法名 说明
public String format(指定格式) 把一个LocalDateTime格式化成为一个字符串
public static LocalDateTime parse(准备解析的字符串,解析格式) 把一个日期字符串解析成为一个LocalDateTime对象

JDK8的日期格式化器:DateTimeFormatter

方法名 说明
public static DateTimeFormatter ofPattern(String pattern) 使用指定的日期模版获取一个日期格式化器DateTimeFormatter对象

LocalDateTime增加或者减少时间的方法

方法名 说明
public LocalDateTime plusYears(long years) 添加或者减去年
public LocalDateTime plusMonths(long months) 添加或者减去月
public LocalDateTime plusDays(long days) 添加或者减去日
public LocalDateTime plusHours(long hours) 添加或者减去时
public LocalDateTime plusMinutes(long minutes) 添加或者减去分
public LocalDateTime plusSeconds(long seconds) 添加或者减去秒
public LocalDateTime plusWeeks(long weeks) 添加或者减去周

plus注意点:

  • 方法返回的一个新的LocalDateTime对象,返回值就是修改之后的结果
  • 参数为正,就是往后加
  • 参数为负,就是往前减 | 方法名 | 说明 | | —- | —- | | public LocalDateTime minusYears(long years) | 减去或者添加年 | | public LocalDateTime minusMonths(long months) | 减去或者添加月 | | public LocalDateTime minusDays(long days) | 减去或者添加日 | | public LocalDateTime minusHours(long hours) | 减去或者添加时 | | public LocalDateTime minusMinutes(long minutes) | 减去或者添加分 | | public LocalDateTime minusSeconds(long seconds) | 减去或者添加秒 | | public LocalDateTime minusWeeks(long weeks) | 减去或者添加周 |

minus注意点:

  • 方法返回的一个新的LocalDateTime对象,返回值就是修改之后的结果
  • 参数为正,就是往前减
  • 参数为负,就是往后加

    LocalDateTime修改方法

    | 方法名 | 说明 | | —- | —- | | public LocalDateTime withYear(int year) | 直接修改年 | | public LocalDateTime withMonth(int month) | 直接修改月 | | public LocalDateTime withDayOfMonth(int dayOfMonth) | 直接修改日期(一个月中的第几天) | | public LocalDateTime withDayOfYear(int dayOfYear) | 直接修改日期(一年中的第几天) | | public LocalDateTime withHour(int hour) | 直接修改小时 | | public LocalDateTime withMinute(int minute) | 直接修改分钟 | | public LocalDateTime withSecond(int second) | 直接修改秒 |

时间间隔对象

Period

方法名 说明
public static Period between(开始时间,结束时间) 计算两个“时间”的间隔
public int getYears() 获得这段时间的年数
public int getMonths() 获得此期间的月数
public int getDays() 获得此期间的天数
public long toTotalMonths() 获得此期间的总月数

Duration

方法名 说明
public static Durationbetween(开始时间,结束时间) 计算两个“时间”的间隔
public long toSeconds() 获得此时间间隔的秒
public int toMillis() 获得此时间间隔的毫秒
public int toNanos() 获得此时间间隔的纳秒

小结

LocalDate 表示日期(年月日)
LocalTime 表示时间(时分秒)
LocalDateTime 表示时间加日期(年月日时分秒)
LocalDateTime可以转化为LocalDate或者LocalTime

  • 创建时间对象(now,of)
  • 获取时间对象中的年,月,日,时,分,秒
  • 格式化(format)
  • 解析(parse)
  • 增加或减少时间的方法(plus开头,minus开头)
  • 修改时间(with开头)

计算时间间隔的两个类:
Period
Duration