日期,时间

本文介绍了JDK8中新增的日期和时间处理类,如LocalDate、LocalTime、LocalDateTime,以及ZoneId、Instant和Duration,展示了它们的特点和API使用方法,强调了Instant作为不可变对象的精度提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

JDK8之前传统的日期、时间

Date

SimpleDateFormat

Calendar

JDK8开始新增的日期、时间

LocalDate

LocalTime

LocalDateTime

 ZoneId:代表时区Id

 Instant        Instant是时间线上的某个时刻/时间戳。通过获取Instant的对象 可以拿到此刻的时间.

period

 Duration


JDK8之前传统的日期、时间

Date

代表的是日期和时间。

构造器说明
public Date()创建一个Date对象,代表的是系统当前此刻日期时间。
public Date(long time)把时间毫秒值转换成Date日期对象。
常见方法说明
public long getTime()返回从1970年1月1日 00:00:00走到此刻的总的毫秒数
public void setTime(long time)设置日期对象的时间为当前时间毫秒值对应的时间

 

 

SimpleDateFormat

代表简单日期式化,可以用来把日期对象、时间毫秒值格式化成我们想要的形式。

常见构造器说明
public SimpleDateFormat (String pattern)创建简单日期格式化对象,并封装时间格式
格式化时间的方法说明
public final String format(Date date)将日期格式化成日期/时间字符串
public final String format(object time)将时间毫秒值式化成日期/时间字符串

Calendar

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

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是可变对象,一旦修改后对其对象本身表示的时间将产生变化。 

JDK8开始新增的日期、时间

 

LocalDate

代表本地日期(年月日星期)

常用API(都是处理年、月、日、星期相关的)。

方法名说明
public int geYear()获取年
public int getMonthValue()获取月份
public int getDayOfMonth()获取日
public int getDayOfYear()获取当前是一年中的第几天
public DayOfWeek getDayOfweek()获取星期几:ld.getDayOfWeek().getValue()
方法名说明
withYear、withDay、withDayOfMonth、withDayOfYear直接修改某个信息,返回新日期对象
plusYear、plusMonth、 plusDays、 plusWeeks把某个信息加多少,返回新日期对象
minusYears、minusMonths、minusDays、minusWeeks把某个信息减多少,返回新日期对象
equals isBefore isAfter判断两个日期对象是否相等,在前还是在后

LocalTime

代表本地时间(时分秒纳秒)

常用API(都是处理时分秒纳秒相关的)

方法名说明
public int getHour()获取小时
public int getMinute()获取分
public int getSecond()获取秒
public int getNano()获取纳秒
说明
修改时间,返回新时间对象
把某个信息加多少,返回新时期对象
把某个信息减多少,返回新时间对象
判断两个时间对象是否相等,在前还是在后

LocalDateTime

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

常用API(可以处理年月日星期时分秒纳秒等信息)

他们获取对象的方法
方法名示例
public static Xxxx now();获取系统当前时间对应的该对象

LocaDate Id=LocalDate.now();

LocalTime It=LocalTime.now();

LocalDateTime Idt=LocalDateTime.now();

public static Xxxx of(...);获取指定时间的对象

LocalDate localDatel=LocalDate.of(2099,11,11);

LocalTime localTimel=LocalTime.of(9,8,59);

LocalDateTime localDateTimel=LocalDateTime.of(2025,11,16,14,30,01);

 LocalDateTime转换成LocalDate、LocalTime

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

 ZoneId:代表时区Id

中国标准时间:世界标准时间+8小时

ZoneId时区的常见方法
方法名说明
public static Set<String>getAvailableZoneIds()获取Java中支持的所有地区
public static ZoneId systemDefault()获取系统默认时区
public static ZoneId(String zoneId)获取一个指定时区

 

 Instant
        Instant是时间线上的某个时刻/时间戳。通过获取Instant的对象 可以拿到此刻的时间.

        该时间由两部分组成:从1970-01-01 00:00:00 开始走到此刻的总秒数+不够1秒的纳秒数(可以用来记录代码的执行时间,或用于记录用户操作某个事件的时间点。

        传统的Date类,只能精确到亳秒,并且是可变对象;新增的Instant类,可以精确到纳秒,并且是不可变对象,推荐用Instant代替Date。)

period

可以用于计算两个LocalDate对象、相差的年数、月数、天

 

 Duration

可以用于计算两个时间对象相差的天数、小时数、分数、秒数、纳秒数;支持LocalTime、LocalDateTime、Instant等时间

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

neoxyf2005

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

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

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

打赏作者

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

抵扣说明:

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

余额充值