当前位置: 首页 > java >正文

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

http://www.xdnf.cn/news/7694.html

相关文章:

  • leetcode hot100:四、解题思路大全:滑动窗口(无重复字符的最长子串、找到字符串中所有字母异位词)、子串(和为k的子数组、)
  • Mysql刷题 day07
  • 苍穹外卖系统结构与功能报告
  • 飞致云旗下开源项目GitHub Star总数突破150,000个
  • 集成运算放大器知识汇总
  • js如何复制图片
  • 嘉立创EDA成图:原理图绘制以及PCB封装导出为.efoo文件
  • 用于管理共享内存的 C# 类 ShareMemory
  • Python 训练营打卡 Day 30
  • SpringBoot实现本地对象存储【minio、阿里云、七牛云】
  • Python-多进程编程 (multiprocessing 模块)
  • 101个α因子#6
  • P2670 [NOIP 2015 普及组] 扫雷游戏
  • 使用VGG-16模型来对海贼王中的角色进行图像分类
  • 【CodeBuddy 】从0到1,打造一个“牛马打鸡血仪”
  • C++ 初阶 | 类和对象易错知识点(上)
  • leetcode2310. 个位数字为 K 的整数之和-medium
  • Python字符串切片详解
  • Oracle中如何解决FREE BUFFER WAITS
  • Modbus通信协议详解
  • 字典和哈希表(javascript版)
  • 水利数据采集MCU水资源的智能守护者
  • 使用VMWare安装的ubuntu虚拟机,突然无法上网.
  • 鸿蒙应用开发:应用运行到设备报错,可能是版本问题,可通过hdc查询设备API版本
  • 第8天-Python趣味绘图:用Turtle库开启绘画编程之旅
  • tcpdump抓包
  • Nuxt的SEO实践
  • 基于MakeReal3D的虚拟预装系统:飞机装配效率与精度的双重突破
  • 告别蜘蛛池!PHP 打造你的网站专属蜘蛛导航仪
  • UDP协议简介