• Java日期时间类


    一、JDK8 之前:日期时间 API

    1. currentTimeMillis

    • System类提供的public static long currentTimeMillis():用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。
      • 此方法适于计算时间差。

     

     2. java.util.Date

    表示特定的瞬间,精确到毫秒。

    • 构造器:
      • Date():使用无参构造器创建的对象可以获取本地当前时间。
      • Date(long 毫秒数):把该毫秒值换算成日期时间对象
    • 常用方法
      • getTime(): 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
      • toString(): 把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat),zzz是时间标准。
      • 其它很多方法都过时了。

    3. SimpleDateFormat 

    java.text.SimpleDateFormat类是一个不与语言环境有关的方式来格式化和解析日期的具体类。

    可以进行格式化:日期 --> 文本

    可以进行解析:文本 --> 日期

    • 构造器:
      • SimpleDateFormat() :默认的模式和语言环境创建对象
      • public SimpleDateFormat(String pattern):该构造方法可以用参数pattern指定的格式创建一个对象
    • 格式化:
      • public String format(Date date):方法格式化时间对象date
    • 解析:
      • public Date parse(String source):从给定字符串的开始解析文本,以生成一个日期。

    附:Java 官网文档中给出的预定义字符串表格

     

     

    4. Calendar(日历) 

    • Date类的API大部分被废弃了,替换为Calendar。
    • Calendar 类是一个抽象类,主用用于完成日期字段之间相互操作的功能。
    • 获取Calendar实例的方法
      • 使用Calendar.getInstance()方法

      • 调用它的子类GregorianCalendar(公历)的构造器。

     

    • 一个Calendar的实例是系统时间的抽象表示,可以修改或获取 YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、MINUTE、SECOND等 日历字段对应的时间值。
      • public int get(int field):返回给定日历字段的值
      • public void set(int field,int value) :将给定的日历字段设置为指定的值
      • public void add(int field,int amount):根据日历的规则,为给定的日历字段添加或者减去指定的时间量
      • public final Date getTime():将Calendar转成Date对象
      • public final void setTime(Date date):使用指定的Date对象重置Calendar的时间
    • 常用字段

    • 注意:
      • 获取月份时:一月是0,二月是1,以此类推,12月是11
      • 获取星期时:周日是1,周二是2 , 。。。。周六是7

    eg:

     

     

    二、JDK8:新的日期时间 API

    1. 本地日期时间:LocalDate、LocalTime、LocalDateTime

    创建对象 

    方法

    描述

    now()/ now(ZoneId zone)

    静态方法,根据当前时间创建对象/指定时区的对象

    of(xx,xx,xx,xx,xx,xxx)

    静态方法,根据指定日期/时间创建对象

    获取相应的值

    getDayOfMonth()/getDayOfYear()

    获得月份天数(1-31) /获得年份天数(1-366)

    getDayOfWeek()

    获得星期几(返回一个 DayOfWeek 枚举值)

    getMonth()

    获得月份, 返回一个 Month 枚举值

    getMonthValue() / getYear()

    获得月份(1-12) /获得年份

    getHours()/getMinute()/getSecond()

    获得当前对象对应的小时、分钟、秒

    设置、更改值

    withDayOfMonth()/withDayOfYear()/withMonth()/withYear()

    将月份天数、年份天数、月份、年份修改为指定的值并返回新的对象

    with(TemporalAdjuster t)

    将当前日期时间设置为校对器指定的日期时间

    plusDays(), plusWeeks(), plusMonths(), plusYears(),plusHours()

    向当前对象添加几天、几周、几个月、几年、几小时

    minusMonths() / minusWeeks()/minusDays()/minusYears()/minusHours()

    从当前对象减去几月、几周、几天、几年、几小时

    plus(TemporalAmount t)/minus(TemporalAmount t)

    添加或减少一个 Duration 或 Period

    判断、比较

    isBefore()/isAfter()

    比较两个 LocalDate

    isLeapYear()

    判断是否是闰年(在LocalDate类中声明)

    格式化、解析

    format(DateTimeFormatter t)

    格式化本地日期、时间,返回一个字符串

    parse(Charsequence text)

    将指定格式的字符串解析为日期、时间

    2. 瞬时:Instant

    • Instant:时间线上的一个瞬时点。 这可能被用来记录应用程序中的事件时间戳。
      • 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
    • java.time.Instant表示时间线上的一点,而不需要任何上下文信息,例如,时区。概念上讲,它只是简单的表示自1970年1月1日0时0分0秒(UTC)开始的秒数。

  • 相关阅读:
    BOM- 操作浏览器
    Java实战-用Java mail实现Exchange发邮件给你喜欢的人
    【cut命令】
    【Linux】---进程控制(创建、终止、等待、替换)
    python:打印九九乘法表、直角三角形、等腰三角形、正方形
    剪贴板劫持--PasteJacker的安装
    i5 6500 HD530 台式机黑苹果记录
    离线安装wireshark2.6.10
    LeetCode每日一题(4. Median of Two Sorted Arrays)
    PPT NO.2 ​插入透明校徽
  • 原文地址:https://blog.csdn.net/weixin_55772633/article/details/134509779