Java常用的API(2)https://developer.aliyun.com/article/1540975
时间相关类
JDK7前的时间相关类
Date | 时间 |
SimpleDateFormat | 格式化时间 |
Calendar | 日历 |
世界标准时间:
- 格林尼治时间/格林威治时间(Greenwich Mean Time)简称(GMT),计算核心:地球自转一天是24小时,太阳直射本初子午线时为政务12点。
- 原子钟:利用铯原子的振动频率计算出来的时间,作为世界标准时间(UTC),原子每振动9,192,631,770次等于1秒。
中国标准时间:世界标准时间+8小时
Date类
Date类是一个JDK写好的JavaBean类,用来描述时间,精确到毫秒。
SimpleDateFormat类
作用:
- 格式化:把时间变成我们喜欢的格式(2022年11月16日、2022-11-16、2022/11/16)
- 解析:把字符串表示的时间变成Date对象
Calendar类
Calendar是一个抽象类,不能直接new一个对象。
//1.获取日历对象 //细:1:Calendar是一个抽象类,不能直接new,而是通过一个静态方法获取到子类对象 //底层原理: //会根据系统的不同时区来获取不同的日历对象,默认表示当前时间。 //把会把时间中的纪元,年,月,日,时,分,秒,星期,等等的都放到一个数组当中 //0:纪元 //1:年 //2:月 //3:一年中的第几周 //4:一个月中的第几周 //5:一个月中的第几天 //....一直到16 //细节2: //月份:范围0~11如果获取出来的是0.那么实际上是1月。 //星期:在老外的眼里,星期日是一周中的第一天 //1(星期日)2(星期一)3(星期二)4(星期三)5(星期四)6(星期五)7(星期六) Calendar c = Calendar.getInstance(); //Date d = c.getTime(); Date d = new Date(0L); c.setTime(d); System.out.println(d); c.set(Calendar.YEAR,2022); c.set(Calendar.MONTH,10); c.set(Calendar.DAY_OF_MONTH,17); c.add(Calendar.YEAR,2); c.add(Calendar.DAY_OF_MONTH,-5); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day = c.get(Calendar.DAY_OF_MONTH); int week = c.get(Calendar.DAY_OF_WEEK); System.out.println(year+" "+month+" "+day+" "+week);
JDK8新增时间相关类
JDK8新增的时间日期对象都是不可变的,如果我们修改、减少、增加了时间,调用者是保护会发生改变的,而是产生一个新的时间对象。
Date类
Java中一共定义了600个时区。
//1.获取当前时间对象(带时区) ZonedDateTime now = ZonedDateTime.now(); System.out.println(now); //2.获取指定的时间对象(带时区) //年月日时分秒纳秒方式指定 ZonedDateTime time1 = ZonedDateTime.of(2023,10,1,11,12,12,0,ZoneId.of("Asia/Shanghai")); System.out.println(time1); //通过Instant +时区的方式指定获取时间对象 Instant instant = Instant.ofEpochMilli(0L); ZoneId zoneId = ZoneId.of("Asia/Shanghai"); ZonedDateTime time2 = ZonedDateTime.ofInstant(instant,zoneId); System.out.println(time2); //3.withXxx 修改时间系列的方法 ZonedDateTime time3 = time2.withYear(2000); System.out.println(time3); //4.减少时间 ZonedDateTime time4 = time3.minusYears(1); System.out.println(time4); //5.增加时间 ZonedDateTime time5 = time4.plusYears(1); System.out.println(time5); //解析/格式化器 DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss EE a"); //格式化 System.out.println(dtf1.format(now));
Calendar类
- get开头的方法表示获取相应的时间对象。
- is开头的表示判断。
时间工具类
- to开头的方法,获取对应的年/月/日/时/分/秒等(toDays等)
Java常用的API(4)https://developer.aliyun.com/article/1540977