Date类

        Date d = new Date();System.out.println(d);System.out.println(d.getTime());Date d1 = new Date(3600000 + d.getTime());System.out.println(d1);

无参构造方法创建一个基于当前时间值的对象,有参构造方法创造对于时间原点一定偏移量的时间对象。getTime方法获取对象表示的时间,setTime方法设置对象的毫秒值

SimpleDateFormat类

  • 格式化时间为我们喜欢的格式

  • 把字符串表示的时间表示为Date对象

构造方法 作用
P SimpleDateFormat() 构造一个对象使用默认格式
P SimpleDateFormat(String pattern) 使用指定格式构造对象
常用方法 作用
P final String format(Date date) 格式化日期对象为字符串
P Date parse(String source) 解析字符串为日期对象

指定时间的格式:

使用y表示年

使用M表示月

使用d表示日

使用H表示时

使用m表示分

使用s表示秒

其他部分可以自己指定

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat();System.out.println(simpleDateFormat.format(new Date()));SimpleDateFormat s2 = new SimpleDateFormat("yyyy年MM月dd日 a HH时mm分ss秒 E");System.out.println(s2.format(new Date()));String time = "2024年12月04日上午11时24分周六";SimpleDateFormat s = new SimpleDateFormat("yyyy年MM月dd日aHH时mm分E");System.out.println(s.parse(time));
2023/3/31 19:59
2023年03月31日 下午 19时59分54秒 周五
Wed Dec 04 11:24:00 CST 2024

Calender类

Calendar代表了系统当前时间的日历对象,可以单独修改获取事件中的年月日;

  • 细节:Calendar是一个抽象类,不能够直接创建对象

获取Calendar类对象的方法是:

public static Calender getInstance()//获取当前时间的日历对象
方法 作用
p final Date getTime() 获取日期对象
p final setTime() 给日历设置日期对象,也可以接受一个Date对象
public long getTimeMillis() 拿到时间的毫秒值
public void setTimeMillis(long millis) 给日历设置时间毫秒值
public int get(int field) 取日历中的某个字段的信息
public void set(int field,int value) 修改日历的某个字段的信息
public void add(int field,int amount) 为某一个字段增加或者减少指定的值
        Calendar c = Calendar.getInstance();System.out.println(c);c.setTime(new Date(0));System.out.println(c);c.setTime(new Date());System.out.println(c.get(Calendar.YEAR));c.set(Calendar.HOUR, 5);System.out.println(c.get(Calendar.HOUR));c.add(Calendar.HOUR, 5);System.out.println(c.get(Calendar.HOUR));
java.util.GregorianCalendar[time=1680265726942,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2023,MONTH=2,WEEK_OF_YEAR=13,WEEK_OF_MONTH=5,DAY_OF_MONTH=31,DAY_OF_YEAR=90,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=5,AM_PM=1,HOUR=8,HOUR_OF_DAY=20,MINUTE=28,SECOND=46,MILLISECOND=942,ZONE_OFFSET=28800000,DST_OFFSET=0]
java.util.GregorianCalendar[time=0,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=1970,MONTH=0,WEEK_OF_YEAR=1,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=1,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=8,HOUR_OF_DAY=8,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=28800000,DST_OFFSET=0]
2023
5
10

需要注意里面存储的月份是从0开始到11,星期数以周日开始

JDK8时间类

Date时期类

ZoneId类

时区

洲名/城市名

国家名/城市名

方法 作用
static Set<String>getAvailableZoneIds() 获取java中支持的所有时区
static ZoneId of(String ZoneId) 获取一个指定时区
static ZoneId systemDefault() 获取系统默认时区
        Set<String> ids = ZoneId.getAvailableZoneIds();System.out.println(ids.size());System.out.println(ids);System.out.println(ZoneId.systemDefault());ZoneId zoneId = ZoneId.of("Etc/GMT+8");System.out.println(zoneId);
602
[Asia/Aden, America/Cuiaba, Etc/GMT+9, Etc/GMT+8, Africa/Nairobi, America/Marigot, Asia/Aqtau, Pacific/Kwajalein, America/El_Salvador......]
Asia/Shanghai
Etc/GMT+8

Instant类

时间戳

方法 作用
static Instant now() 获取当前时间的Instant对象(标准时间,获取当地时间需要加八个小时)
static Instant ofXxxx(long epochMilli) 根据秒或者毫秒或者纳秒获取Instant对象
ZonedDateTime atZone(ZoneId zone) 指定时区
boolean isXxxx(Instant otherInstant) 判断系列的方法
Instant minusXxx(long millisToSubtract) 减少时间系列的方法
Instant plusXxx(long millisToSubtract) 增加时间系列的方法
        System.out.println(Instant.now());//计算机时间,获取当前时间需要在此时间再加八个小时Instant instant1 = Instant.ofEpochMilli(0L);System.out.println(instant1);//获取指定时间的计算机时间Instant second = Instant.ofEpochSecond(1L);//上面的方法以微秒为参数,这个以秒为参数System.out.println(second);System.out.println(Instant.ofEpochSecond(20L, 1000000000L));//第二个参数为微秒,都用来调整时间System.out.println(Instant.now().atZone(ZoneId.of("Asia/Shanghai")));Instant i1 = Instant.ofEpochSecond(0L);Instant i2 = Instant.ofEpochSecond(1000L);if (i1.isAfter(i2))System.out.println("i1在i2之后");if (i1.isBefore(i2))System.out.println("i1在i2之前");i2 = i1.plusSeconds(11L);System.out.println(i2);System.out.println(i2.minusMillis(10000L));
2023-04-01T05:21:18.048603800Z
1970-01-01T00:00:00Z
1970-01-01T00:00:01Z
1970-01-01T00:00:21Z
2023-04-01T13:21:18.054602900+08:00[Asia/Shanghai]
i1在i2之前
1970-01-01T00:00:11Z
1970-01-01T00:00:01Z

ZnoeDateTime类

带时区的时间

方法 作用
static ZoneDateTime now() 获取当前时间的对象
static ZoneDateTime ofXxxx(…) 获取指定时间的对象
ZoneDateTime withXxx(时间) 修改时间系列的方法
ZoneDateTime minusXxx(时间) 减少时间系列的方法
ZoneDateTime plusXxx(时间) 增加时间系列的方法
        ZonedDateTime now = ZonedDateTime.now();System.out.println(now);ZonedDateTime of = ZonedDateTime.of(2023, 4, 1, 13, 28, 50, 1000, ZoneId.of("Asia/Shanghai"));System.out.println(of);System.out.println(ZonedDateTime.ofInstant(Instant.now(), ZoneId.of("Asia/Shanghai")));System.out.println(now.withHour(0));System.out.println(now.minusDays(5));System.out.println(now.plusMonths(1));
2023-04-01T13:33:01.963066100+08:00[Asia/Shanghai]
2023-04-01T13:28:50.000001+08:00[Asia/Shanghai]
2023-04-01T13:33:01.963066100+08:00[Asia/Shanghai]
2023-04-01T00:33:01.963066100+08:00[Asia/Shanghai]
2023-03-27T13:33:01.963066100+08:00[Asia/Shanghai]
2023-05-01T13:33:01.963066100+08:00[Asia/Shanghai]

需要注意JDK8事件对象不可变,所有修改时间的方法都返回一个新的时间对象

SimpleDateFormat日期格式化类

DateTimeFormatter类

用于时间的格式化和解析

方法 作用
static DateTimeFormatter ofPattern(格式) 获取格式对象
String format(时间对象) 按照指定方式格式化
        ZonedDateTime now = ZonedDateTime.now();DateTimeFormatter a1 = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒 EE a");System.out.println(a1.format(now));
2023年04月01日 13时41分52秒 周六 下午

Calendar日历类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jrTx6d5E-1680328690433)(004_时间相关.assets/bc9676cec91047d880bb3d1b079d1d58.png)]

LocalDate类

年月日

LocalTime类

时分秒

LocalDateTime类

年月日时分秒

工具类

Duration类

时间间隔(s/ns)

Period类

时间间隔(年月日)

ChronoUnit类

时间间隔(所有单位)

Java时间相关的对象和方法相关推荐

  1. 将Fri May 04 17:25:34 CST 2012形式的日期字符串转换成java.util.Date对象的方法

    java.util.Date类的toString()方法默认生成"Fri May 04 17:25:34 CST 2012"形式的字符串,但从这样的字符串生成java.util.D ...

  2. JAVA中类、对象、方法之间的关联关系

    引言   Java是一门面向对象的程序设计语言,基础语法是由类.对象.方法等共同组成,一个Java程序可以看成是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作. 定义   类:是一个模板,是 ...

  3. finalize java,Java中Object对象finalize方法详细解析

    简书:capo 转载请注明原创出处,谢谢! 前言: 今天我们来看看Object中一个经常被人遗忘的方法,finalize方法.老规矩,我们先看看Javadoc是怎样描述这个方法的 /** * Call ...

  4. Java中类,对象,方法的关系

    类 类的理解 类是现实生活中一类具有共同属性和行为的事物的抽象 类是一个抽象的概念,它不存在于现实中的时间/空间里,类只是为所有的对象定义了抽象的属性与行为 自我理解就是: 1.将张三这个人(对象)拥 ...

  5. Java list打印对象的方法

    今天在使用println打印list时发现打印的并不是字符串,而是下面这种类型 pojo.Account@ea6147e 因为我的list里面存放的是object类,所以在打印时会调用该对象的toSt ...

  6. 粤嵌星计划打卡第二十一天(java面型对象:方法重载)

    文章目录 1.定义一个函数实现输出一个长方形 1.1 void就是省略了return(就是可以简单的省事) 2重载 2.1 重载的概念 2.2 重载小练习 3函数在内存中的调用过程 1.定义一个函数实 ...

  7. java中的request对象_java中request对象各种方法的使用实例分析

    本文实例讲述了java中request对象各种方法的使用.分享给大家供大家参考,具体如下: request对象是从客户端向服务器端发出请求,包括用户提交的信息以及客户端的一些信息.request对象是 ...

  8. Java Object类的各个方法

    Java中所有的类都继承自java.lang.Object类,Object类中一共有11个方法: public final native Class<?> getClass();publi ...

  9. java 匿名list,java创造匿名对象的两种方法

    在java中有时候需要一些匿名对象的使用.可能有些小伙伴拿还不会创造,其实我们在学习一些方法时都或多或少的接触过.本篇所要讲到的创造匿名对象总结了两种方法,分别是静态工具方法和Lambda表达式,我们 ...

最新文章

  1. 进制转换converse
  2. [转载]Memcache内存临界测试
  3. SAP UI5 应用开发教程之十六 - 图标 icon 的使用
  4. 搭建IC设计EDA虚拟机服务器,忆往昔--集成门控时钟技术的前世--分离门控时钟技术...
  5. JUC:ConcurrentHashMap(并发容器)
  6. 使用内存文件映射MappedByteBuffer读超大文件可能会遇到的问题
  7. 区块链 xuperchain io.grpc.StatusRuntimeException: UNKNOWN: error execution reverted: execution reverted
  8. 设计模式之GOF23适配器模式
  9. eclipse汉化(傻瓜式)
  10. CAD转CAD注意事项
  11. Word文档如何去掉最后一页的页码且不会影响其它页的页码
  12. 【python基础】python爬虫对网页壁纸图片批量抓取下载
  13. google翻译的一个错误
  14. ADS1115的四通道使用
  15. 大型网站架构“三高”(高并发、高可用、高性能)
  16. PhysX碰撞检测之onContact和onTrigger
  17. 微信小程序文字链接生成二维码,扫描识别二维码
  18. 【动态规划】入门练习题浅总
  19. 为什么使用use strict可以节约你的时间
  20. Gensim官方教程翻译(二)——语料库与向量空间(Corpora and Vector Spaces)

热门文章

  1. 荣耀笔记本可以JAVA_荣耀笔记本装Win10系统攻略,一文教你快速入门
  2. speedoffice怎么在PPT里面给某些文字添加下划线
  3. 自动驾驶 Apollo 源码分析系列,感知篇(九):感知融合中的数据关联细节
  4. VScode 配置C/C++环境
  5. 【 RCWL 0516 微波雷达传感器 Arduino使用教程 】
  6. 仿网易云的音乐播放器
  7. 用PS临摹悟空(黑神话)
  8. 每日一题--设计一个呼叫中心系统(Google面试推荐书Cracking the Coding Interview)
  9. Spring Cloud H (二)服务注册中心 Zookeeper
  10. SpringBoot整合支付宝支付接口 详解 (有源文件)