API(时间类)

一、Date类

java.util.Date`类 表示特定的瞬间,精确到毫秒。

Date常用方法:

public long getTime() 把日期对象转换成对应的时间毫秒值。

public void setTime(long time) 把方法参数给定的毫秒值设置给日期对象
二、SimpleDateFormat类

public SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。参数pattern是一个字符串,代表日期时间的自定义格式。

public simpleDateFormat() 默认格式

public simpleDateFormat(String pattern) 指定格式

public final string format(Date date) 格式化(日期对象 ->字符串)

public Date parse(string source) 解析(字符串 ->日期对象)

三、Calendar类

java.util.Calendar类表示一个"日历类",可以进行日期运算。它是一个抽象类,不能创建对象,我们可以使用它的子类:java.util.GregorianCalendar类。

通过getlnstance方法获取对象

java 复制代码
Calendar c = Calendar.getInstance();

public static Calendar lgetInstance() 获取当前时间的日历对象

public final Date getTime() 获取日期对象

public final setTime(Date date) 给日历设置日期对象

public long getTimeInMillis() 拿到时间毫秒值

public void setTimeInMillis(long millis) 给日历设置时间毫秒值

public int get(int field) 获取日期中的某个字段信息

public void set(int field,int value) 修改日历的某个字段信息

public void add(int field,int amount) 为某个字段增加/减少指定的值

1.获取日历对象

细节1:Calendar是一个抽象类,不能直接new,而是通过一个静态方法获取到子类对象

底层原理:

会根据系统的不同时区来获取不同的日历对象,默认表示当前时间。

把会把时间中的纪元,年,月,日,时,分,秒,星期,等等的都放到一个数组当中

日 :纪元

1 :年

2 :月

3 : 一年中的第几周

4:一个月中的第几周

5: 一个月中的第几天(日期)

....

2:

月份:范围0~11 如果获取出来的是.那么实际上是1月。

星期:在国外,星期日是一周中的第一天

1(星期日) 2(星期一) 3(星期二) 4(星期三) 5(星期四) 6(星期五) 7(星期六)


四、ZoneId 时区
static Set<string> getAvailableZoneIds() 获取Java中支持的所有时区

static ZoneId systemDefault() 获取系统默认时区

static Zoneld of(string zoneld) 获取一个指定时区
五、Instant 时间戳
static Instant now() 获取当前时间的Instant对象(标准时间)

static Instant ofXxxx(long epochMilli) 根据(秒/毫秒/纳秒)获取Instant对象

ZonedDateTime atZone(ZoneIdzone) 指定时区

boolean isxxx(Instant otherInstant) 判断系列的方法

Instant minusXxx(long millisToSubtract) 减少时间系列的方法

Instant plusXxx(long millisToSubtract) 增加时间系列的方法

获取对象时间:

复制代码
ZonedDateTime time = Instant.now().atZone(ZoneId.of("Asia/Shanghai"));

六、ZoneDateTime 带时区的时间
static ZonedDateTime now() 获取当前时间的ZonedDateTime对象

static ZonedDateTime ofXxxx(。。。) 获取指定时间的ZonedDateTime对象

ZonedDateTime withXxx(时间) 修改时间系列的方法

ZonedDateTime minusXxx(时间) 减少时间系列的方法

ZonedDateTime plusXxx(时间) 增加时间系列的方法
七、DateTimeFormatter 用于时间的格式化和解析
static DateTimeFormatter ofPattern(格式) 获取格式对象

String format(时间对象) 按照指定方式格式化
八、LocalDate 年、月、日

LocalTime 时、分、秒

LocalDateTime 年、月、日、时、分、秒

九、Duration 时间间隔(秒,纳,秒)

java 复制代码
// 本地日期时间对象。
LocalDateTime today = LocalDateTime.now();
System.out.println(today);

// 出生的日期时间对象
LocalDateTime birthDate = LocalDateTime.of(2000, 1, 1, 0, 0, 0);
System.out.println(birthDate);

Duration duration = Duration.between(birthDate, today);//第二个参数减第一个参数
System.out.println("相差的时间间隔对象:" + duration);

System.out.println("============================================");
System.out.println(duration.toDays());//两个时间差的天数
System.out.println(duration.toHours());//两个时间差的小时数
System.out.println(duration.toMinutes());//两个时间差的分钟数
System.out.println(duration.toMillis());//两个时间差的毫秒数
System.out.println(duration.toNanos());//两个时间差的纳秒数

十、Period 时间间隔(年,月,日)

java 复制代码
// 当前本地 年月日
LocalDate today = LocalDate.now();
System.out.println(today);

// 生日的 年月日
LocalDate birthDate = LocalDate.of(2000, 1, 1);
System.out.println(birthDate);

Period period = Period.between(birthDate, today);//第二个参数减第一个参数

System.out.println("相差的时间间隔对象:" + period);
System.out.println(period.getYears());
System.out.println(period.getMonths());
System.out.println(period.getDays());

System.out.println(period.toTotalMonths());

十一、ChronoUnit 时间间隔(所有单位)

java 复制代码
// 当前时间
LocalDateTime today = LocalDateTime.now();
System.out.println(today);
// 生日时间
LocalDateTime birthDate = LocalDateTime.of(2000, 1, 1,0, 0, 0);
System.out.println(birthDate);

System.out.println("相差的年数:" + ChronoUnit.YEARS.between(birthDate, today));
System.out.println("相差的月数:" + ChronoUnit.MONTHS.between(birthDate, today));
System.out.println("相差的周数:" + ChronoUnit.WEEKS.between(birthDate, today));
System.out.println("相差的天数:" + ChronoUnit.DAYS.between(birthDate, today));
System.out.println("相差的时数:" + ChronoUnit.HOURS.between(birthDate, today));
System.out.println("相差的分数:" + ChronoUnit.MINUTES.between(birthDate, today));
System.out.println("相差的秒数:" + ChronoUnit.SECONDS.between(birthDate, today));
System.out.println("相差的毫秒数:" + ChronoUnit.MILLIS.between(birthDate, today));
System.out.println("相差的微秒数:" + ChronoUnit.MICROS.between(birthDate, today));
System.out.println("相差的纳秒数:" + ChronoUnit.NANOS.between(birthDate, today));
System.out.println("相差的半天数:" + ChronoUnit.HALF_DAYS.between(birthDate, today));
System.out.println("相差的十年数:" + ChronoUnit.DECADES.between(birthDate, today));
System.out.println("相差的世纪(百年)数:" + ChronoUnit.CENTURIES.between(birthDate, today));
System.out.println("相差的千年数:" + ChronoUnit.MILLENNIA.between(birthDate, today));
System.out.println("相差的纪元数:" + ChronoUnit.ERAS.between(birthDate, today));
相关推荐
idolyXyz26 分钟前
[java: Cleaner]-一文述之
java
一碗谦谦粉36 分钟前
Maven 依赖调解的两大原则
java·maven
emplace_back1 小时前
C# 集合表达式和展开运算符 (..) 详解
开发语言·windows·c#
jz_ddk1 小时前
[学习] C语言数学库函数背后的故事:`double erf(double x)`
c语言·开发语言·学习
萧曵 丶1 小时前
Rust 所有权系统:深入浅出指南
开发语言·后端·rust
netyeaxi1 小时前
Java:使用spring-boot + mybatis如何打印SQL日志?
java·spring·mybatis
xiaolang_8616_wjl1 小时前
c++文字游戏_闯关打怪2.0(开源)
开发语言·c++·开源
收破烂的小熊猫~1 小时前
《Java修仙传:从凡胎到码帝》第四章:设计模式破万法
java·开发语言·设计模式
猴哥源码1 小时前
基于Java+SpringBoot的动物领养平台
java·spring boot