Java时间相关的对象和方法
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时间相关的对象和方法相关推荐
- 将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 ...
- JAVA中类、对象、方法之间的关联关系
引言 Java是一门面向对象的程序设计语言,基础语法是由类.对象.方法等共同组成,一个Java程序可以看成是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作. 定义 类:是一个模板,是 ...
- finalize java,Java中Object对象finalize方法详细解析
简书:capo 转载请注明原创出处,谢谢! 前言: 今天我们来看看Object中一个经常被人遗忘的方法,finalize方法.老规矩,我们先看看Javadoc是怎样描述这个方法的 /** * Call ...
- Java中类,对象,方法的关系
类 类的理解 类是现实生活中一类具有共同属性和行为的事物的抽象 类是一个抽象的概念,它不存在于现实中的时间/空间里,类只是为所有的对象定义了抽象的属性与行为 自我理解就是: 1.将张三这个人(对象)拥 ...
- Java list打印对象的方法
今天在使用println打印list时发现打印的并不是字符串,而是下面这种类型 pojo.Account@ea6147e 因为我的list里面存放的是object类,所以在打印时会调用该对象的toSt ...
- 粤嵌星计划打卡第二十一天(java面型对象:方法重载)
文章目录 1.定义一个函数实现输出一个长方形 1.1 void就是省略了return(就是可以简单的省事) 2重载 2.1 重载的概念 2.2 重载小练习 3函数在内存中的调用过程 1.定义一个函数实 ...
- java中的request对象_java中request对象各种方法的使用实例分析
本文实例讲述了java中request对象各种方法的使用.分享给大家供大家参考,具体如下: request对象是从客户端向服务器端发出请求,包括用户提交的信息以及客户端的一些信息.request对象是 ...
- Java Object类的各个方法
Java中所有的类都继承自java.lang.Object类,Object类中一共有11个方法: public final native Class<?> getClass();publi ...
- java 匿名list,java创造匿名对象的两种方法
在java中有时候需要一些匿名对象的使用.可能有些小伙伴拿还不会创造,其实我们在学习一些方法时都或多或少的接触过.本篇所要讲到的创造匿名对象总结了两种方法,分别是静态工具方法和Lambda表达式,我们 ...
最新文章
- 进制转换converse
- [转载]Memcache内存临界测试
- SAP UI5 应用开发教程之十六 - 图标 icon 的使用
- 搭建IC设计EDA虚拟机服务器,忆往昔--集成门控时钟技术的前世--分离门控时钟技术...
- JUC:ConcurrentHashMap(并发容器)
- 使用内存文件映射MappedByteBuffer读超大文件可能会遇到的问题
- 区块链 xuperchain io.grpc.StatusRuntimeException: UNKNOWN: error execution reverted: execution reverted
- 设计模式之GOF23适配器模式
- eclipse汉化(傻瓜式)
- CAD转CAD注意事项
- Word文档如何去掉最后一页的页码且不会影响其它页的页码
- 【python基础】python爬虫对网页壁纸图片批量抓取下载
- google翻译的一个错误
- ADS1115的四通道使用
- 大型网站架构“三高”(高并发、高可用、高性能)
- PhysX碰撞检测之onContact和onTrigger
- 微信小程序文字链接生成二维码,扫描识别二维码
- 【动态规划】入门练习题浅总
- 为什么使用use strict可以节约你的时间
- Gensim官方教程翻译(二)——语料库与向量空间(Corpora and Vector Spaces)
热门文章
- 荣耀笔记本可以JAVA_荣耀笔记本装Win10系统攻略,一文教你快速入门
- speedoffice怎么在PPT里面给某些文字添加下划线
- 自动驾驶 Apollo 源码分析系列,感知篇(九):感知融合中的数据关联细节
- VScode 配置C/C++环境
- 【 RCWL 0516 微波雷达传感器 Arduino使用教程 】
- 仿网易云的音乐播放器
- 用PS临摹悟空(黑神话)
- 每日一题--设计一个呼叫中心系统(Google面试推荐书Cracking the Coding Interview)
- Spring Cloud H (二)服务注册中心 Zookeeper
- SpringBoot整合支付宝支付接口 详解 (有源文件)