【Java语言基础】7.2 日期与时间、包装类

日期与时间

Date

  • Date类的对象在Java中代表的是当前所在系统的此刻日期时间。
  • Date的构造器:
名称说明
public Date()创建一个Date对象,代表的是系统当前此刻日期时间。
public Date(long time)把时间毫秒值转换成Date日期对象。
  • Date的常用方法:
名称说明
public long getTime()获取时间对象的毫秒值
public long setTime(long time)设置日期对象的时间为当前时间毫秒值对应的时间

SimpleDateFormat

  • 可以对Date对象或时间毫秒值格式化成我们喜欢的时间形式。
  • 也可以把字符串的时间形式解析成日期对象。
  • SimpleDateFormat的构造器:
构造器说明
public SimpleDateFormat()构造一个SimpleDateFormat,使用默认格式
public SimpleDateFormat(String pattern)构造一个SimpleDateFormat,使用指定的格式
  • SimpleDateFormat的格式化方法:
格式化方法说明
public final String format(Date date)将日期格式化成日期/时间字符串
public final String format(Object date)将时间毫秒值格式化成日期/时间字符串
  • 格式化的时间形式的常用模板表示:
    • yyyy年MM月dd日 HH:mm:ss EEE a
    • y   年
    • M   月
    • d   日
    • H   时
    • m   分
    • s   秒
    • E   周几
    • a   上下午
  • SimpleDateFormat解析字符串时间成为日期对象:
解析方法说明
public Date parse(String source)从给定字符串的开始解析文本以生成日期

Calendar

  • Calendar代表了系统此刻日期对应的日历对象。
  • Calendar是一个抽象类,不能直接创建对象。
  • Calendar日历类创建日历对象的方法:
方法名说明
public static Calendar getInstance()获取当前日历对象
  • Calendar常用方法:
方法名说明
public int get(int field)取日期中的某个字段信息。
public void set(int field,int value)修改日历的某个字段信息。
public void add(int field,int amount)为某个字段增加/减少指定的值。
public final Date getTime()拿到此刻日期对象。
public long getTimeInMillis()拿到此刻时间毫秒值。

JDK8新增日期类

概述

  • 从Java 8开始,java.time包提供了新的日期和时间API,主要涉及的类型有:
    • LocalDate: 不包含具体时间的日期。
    • LocalTime: 不含日期的时间。
    • LocalDateTime: 包含了日期和时间。
    • Instant: 代表的是时间戳。
    • DateTimeFormatter: 用于做时间的格式化和解析的。
    • Duration: 用于计算两个“时间”间隔。
    • Period: 用于计算两个“日期”间隔。
  • 新增的API严格区分了时刻、本地日期、本地时间,并且,对日期和时间进行运算更加方便。
  • 其次,新API的类型几乎全部是不变类型(和String的使用类似),可以放心使用不必担心被修改。

LocalDate、LocalTime、LocalDateTime

  • 它们分别表示日期,时间,日期时间对象,它们的类的实例是不可变的对象。
  • 它们三者构建对象和API都是通用的。
  • 构建对象的方式如下:
方法名说明示例
public static Xxxx now();静态方法,根据当前时间创建对象LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
public static Xxxx of(…);静态方法,指定日期/时间创建对象LocalDate localDate = LocalDate.of(2099,11,11);
LocalTime localTime = LocalTime.of(11,11,11);
LocalDateTime localDateTime = LocalDateTime.of(2020,10,6,13,23,43);
  • LocalDate、LocalTime、LocalDateTime获取信息的API:
方法名说明
public int getYear()获取年
public int getMonthValue()获取月份(1-12)
public int getDayOfMonth()获取月中第几天
public int getDayOfYear()获取年中第几天
public DayOfWeek getDayOfWeek()获取星期
  • LocalDateTime可以转换成LocalDate和LocalTime。
方法名说明
public LocalDate toLocalDate()转换成一个LocalDate对象
public LocalDate toLocalTime()转换成一个LocalTime对象

Instant时间戳

  • JDK8获取时间戳特别简单,且功能丰富。Instant类由一个静态的工厂方法now()可以返回当前时间戳。
  • 时间戳是包含日期和时间的,与java.util.Date很类似,事实上Instant就是类似JDK8以前的Date。
  • Instant和Date这两个类可以进行转换。

DateTimeFormatter

  • 在JDK8中,引入了一个全新的日期与时间格式器DateTimeFormatter。
  • 正反都能调用format方法。
LocalDateTime ldt = LocalDateTime.now();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

ldt.format(dtf);
dtf.format(ldt);

Duration/Period

Period

  • 在Java8中,我们可以使用以下类来计算日期间隔差异:java.time.Period
  • 主要是Period类方法getYears(),getMonths()和getDays()来计算,只能精确到年月日。
  • 用于LocalDate之间的比较。

Duration

  • 在Java8中,我们可以使用以下类来计算时间间隔差异:java.time.Duration
  • 提供了使用基于时间的值测量时间量的方法。
  • 用于LocalDateTime之间的比较。也可用于Instant之间的比较。

包装类

  • 其实是8种基本数据类型对应的引用类型。
基本数据类型引用数据类型
byteByte
shortShort
intInteger
longLong
charCharacter
floatFloat
doubleDouble
booleanBoolean
  • Java为了实现一切皆对象,为8种基本数据类型提供了对应的引用类型。
  • 后面的集合和泛型其实也只能支持包装类型,不支持基本数据类型。
  • 自动装箱: 基本类型的数据和变量可以直接赋值给包装类型的变量。
  • 自动拆箱: 包装类型的变量可以直接赋值给基本数据类型的变量。
  • 包装类的特有功能:
    • 包装类的变量的默认值可以是null,容错率更高。
    • 可以把基本类型的数据转换成字符串类型(用处不大)。
    • 可以把字符串类型的数值转换成真实的数据类型(用处很大)。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐三木Mu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值