Java基础 Day16

一、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​()

构造一个SimpleDateFormat,使用默认格式

public SimpleDateFormat​(String pattern)

构造一个SimpleDateFormat,使用指定的格式(查API)

public final String format(Date date)

将日期格式化成日期/时间字符串

public final Date parse(String source)

将字符串解析为日期类型

三、Calendar 类(不常用)

代表的是系统此刻时间对应的日历

通过它可以单独获取、修改时间中的年、月、日、时、分、秒等

public int get(int field)

取日历中的某个字段信息

public void set(int field,int value)

修改日历的某个字段信息

public void add(int field,int amount)

为某个字段增加/减少指定的值

// 获取当前时间的日历对象
Calendar c = Calendar.getInstance();
// Calendar 是抽象类
// 通过此方法获取的是子类对象

int y = c.get(Calendar.YEAR);
// 注意Calendar类中的月份是0-11

public final Date getTime()

获取日期对象

public final setTime(Date date)

给日历设置日期对象

四、日历类(JDK8)

LocalDate类:代表本地日期(年、月、日、星期)

LocalTime类:代表本地时间(时、分、秒、纳秒)

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

1、获取对象

public static Xxxx now(): 获取系统当前时间对应的该对象

LocaDate ld = LocalDate.now();

LocalTime lt = LocalTime.now();

LocalDateTime ldt = LocalDateTime.now();

public static Xxxx of(…):获取指定时间的对象

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

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

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

2、常用的 get 方法

int getYear()

获取年份字段

Month getMonth()

使用 Month 枚举获取年份字段

int getMonthValue()

获取1到12之间的月份字段

int getDayOfMonth()

获取日期字段

DayOfWeek getDayOfWeek()

获取星期几字段,即枚举 DayOfWeek

int getHour()

获取当日时间字段

int getMinute()

获取分钟字段

int getSecond()

获取第二分钟字段

3、常用的 set 方法

withHour、withMinute、withSecond、withNano

修改时间,返回新时间对象

plusHours、plusMinutes、plusSeconds、plusNanos

把某个信息加多少,返回新时间对象

minusHours、minusMinutes、minusSeconds、minusNanos

把某个信息减多少,返回新时间对象

equals、isBefore、isAfter

判断2个时间对象,是否相等,在前还是在后 

Tips:LocalDateTime、LocalDate、LocalTime 都是不可变的,  上述方法返回的是一个新的对象

五、日期格式化类(JDK8)

DateTimeFormatter类:用于时间的格式化和解析

1、对象获取

static DateTimeFormatter ofPattern(格式) 

获取格式对象

2、格式化

String format​(时间对象) 

按照指定方式格式化

3、解析(调用的是日历类里的方法)

LocalDateTime.parse("解析字符串", 格式化对象)

LocalTime.parse("解析字符串", 格式化对象)

LocalDate.parse("解析字符串", 格式化对象)

六、时间类(JDK8)

1、Instant 类(时间戳,类似于 Date)

static Instant now​() 

获取当前时间的Instant对象(标准时间)

static Instant ofXxxx​(long epochMilli) 

根据(秒/毫秒/纳秒)获取Instant对象

ZonedDateTime atZone​(ZoneId zone) 

指定时区

boolean isXxx(Instant otherInstant) 

判断时间前后的方法

Instant minusXxx​(long millisToSubtract) 

减少时间系列的方法

Instant plusXxx​(long millisToSubtract) 

增加时间系列的方法

Instant instant = Instant.now();
System.out.println("当前时间戳是:" + instant);
// 获取到的并不是东八区的时间

ZoneId o = ZoneId.of("Asia/Shanghai");  
ZonedDateTime zdt = Instant.now().atZone(o);
System.out.println(zdt);

 

2、ZoneId 类(时区)

static Set<String> getAvailableZoneIds​()

获取Java中支持的所有时区

static ZoneId systemDefault​()

获取系统默认时区

static ZoneId of​(String zoneId)

获取一个指定时区

3、ZoneDateTime 类(带时区的时间对象)

static ZonedDateTime now​() 

获取当前时间的ZonedDateTime对象

static ZonedDateTime ofXxxx​(...) 

获取指定时间的ZonedDateTime对象

ZonedDateTime withXxx(时间) 

修改时间系列的方法

ZonedDateTime minusXxx​(时间) 

减少时间系列的方法

ZonedDateTime plusXxx​(时间) 

增加时间系列的方法

七、工具类(JDK8)

Duration 类:用于计算两个“时间”间隔(秒,纳秒)

Period 类:用于计算两个“日期”间隔(年、月、日)

ChronoUnit 类:用于计算两个“日期”间隔

String birthday = "1990年01月01日";
// 获取格式化对象
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年M月d日");
// 格式化,得到日历类的对象
LocalDate birthdayDate = LocalDate.parse(birthday, formatter);
LocalDate now = LocalDate.now();
// 用 ChronoUnit类的方法计算年份差值
long diff = ChronoUnit.YEARS.between(birthdayDate, now);
System.out.println(diff);  // 35

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值