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));
相关推荐
跃ZHD5 分钟前
前后端分离,Jackson,Long精度丢失
java
blammmp26 分钟前
Java:数据结构-枚举
java·开发语言·数据结构
何曾参静谧39 分钟前
「C/C++」C/C++ 指针篇 之 指针运算
c语言·开发语言·c++
暗黑起源喵44 分钟前
设计模式-工厂设计模式
java·开发语言·设计模式
WaaTong1 小时前
Java反射
java·开发语言·反射
Troc_wangpeng1 小时前
R language 关于二维平面直角坐标系的制作
开发语言·机器学习
努力的家伙是不讨厌的1 小时前
解析json导出csv或者直接入库
开发语言·python·json
Envyᥫᩣ1 小时前
C#语言:从入门到精通
开发语言·c#
九圣残炎1 小时前
【从零开始的LeetCode-算法】1456. 定长子串中元音的最大数目
java·算法·leetcode
wclass-zhengge1 小时前
Netty篇(入门编程)
java·linux·服务器