网站首页 > 技术文章 正文
日期和时间
专门用来表示日期和时间的类:
1.Date (是long类型的包装) date日期
2.Calendar (抽象类,是历法的抽象) calendar日历
3.long (可以表示,一般不使用,表示1970至今毫的秒数) 相对时间(1970年)
Java中表示时间的类的本质:
1.Date=long + 操作 偏重时间,重点在一刹那时间本身
2.Calendar= long + 操作 偏重日历计算
时间的标准
GMT 1970.01.01开始
UTC 0开始
语法:
1.Date创建对象
Date date=new Date(); //默认值为系统的当前时间
Date date=new Date(年-1900,月-1,日); //年份需要减去1900 月份需要减1
2.获取年份
int year = date.getYear(); (已过时,不使用,有”千年虫”问题,并且有1900的误差,)
获取月份
int month = date.getMonth(); (已过时,不使用,0代表1月,需要加1)
(日期:Date,时:Hours,分: Minutes,秒: Seconds,星期几:Day)
3.Calendar创建对象 (最好使用Calendar,不使用Date)
Calendar cal=new GregorianCalendar(); //默认值为系统的当前时间
cal.get(2009,3-1,1) //设定到指定时间,月份需要减1
Calendar 抽象类 历法的抽象 new的是GregorianCalendar对象
GregorianCalendar(1582公历 一种历法)是Calendar类的子类
GregorianCalendar 就是公元历法(公历) = long类型 + 公历算法
4.获取年份
cal.get(Calendar.YEAR)
获取月份
cal.get(Calendar.MONTH) (0月代表1月,需要加1)
5.long创建对象
long now = System.currentTimeMillis();
(表示从格林威治开始时间(1970.1.1)至今的毫秒数)
获取年份
int year = now/1000/60/60/24/365 + 1970 (开始时间是1970所以要+1970)
不同日期时间类的相互转化
获取系统现在时间:
Date: new Date()
Calendar: new GregorianCalendar();
long: System.currentTimeMillis();
Date , long之间的相互转化
Date àlong date.getTime()
long à1. Date date = new Date(long); (long为long类型的对象引用名称)
2. Date date = new Date();
date. setTime(long); (long为long类型的对象引用名称)
Date,Caledar之间的相互转化
DateàCalendar Date date = new Date();
Calendar cal=new GregorianCalendar();
cal.setTime(date);
CalendaràDate Calendar cal=new GregorianCalendar();
cal.getTime();
Calecdar的add方法:可以在Calendar对象中的某个字段上增加/减少一定数值
cal.add(Calendar.YYY , X) X为正则加,X为负则减
EG:cal.add(Calecdar.Year , 100) 在当前的日期上加100年
Calecdar的set方法:调整日期到某一天
EG: 调整到当前周(DAY_OF_WEEK)的周五
cal.set(Calendar. DAY_OF_WEEK, Calendar.FRIDAY );
Date和String之间的转化
日期的输入和输出
1.日期输入的本质 是将格式化的字符串转换成Date类型
2.日期输出的本质 是将Date类型转化成格式化的字符串
3.Java.text.SimpleDateFormat
a.首先需要创建一个SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//()中给字符串定义格式月份 M(month)必须大写 m代表分钟
b.sdf.parse(String) //将格式化的字符串转换成日期对象
sdf.format(date) //将日期对象格式化成字符串
猜你喜欢
- 2024-09-21 Java并发编程:LongAdder | LongAccumulator 对比测试
- 2024-09-21 「Java技巧」优雅的统计程序的执行时间,别再用System.cur
- 2024-09-21 Flink SQL 知其所以然(九)| SQL 的时间语义
- 2024-09-21 ArrayList插入1000w条数据之后,我怀疑了jvm...
- 2024-09-21 《Java实战之内存模型》详解篇(java内存模型happens before)
- 2024-09-21 比反射更快!使用ASM获取class信息(ClassReader)
- 2024-09-21 了解Java线程优先级,更要知道对应操作系统的优先级,不然会踩坑
- 2024-09-21 让大学生写的一个计算时间的方法,有人看得出来是在做什么吗?这
- 2024-09-21 Java基础——Java多线程(Lock接口详解)
- 2024-09-21 JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解
- 1514℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 569℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 510℃MySQL service启动脚本浅析(r12笔记第59天)
- 486℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 485℃启用MySQL查询缓存(mysql8.0查询缓存)
- 467℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 446℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 444℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)