|NO.Z.00037|——————————|BigDataEnd|——|Java&核心类库.V07|——|Java.v07|Calendar类|概念使用|Calendar类|方法多态|使用方式|
一、[Calendar类的概念和使用]——[Calendar类的方法和多态的使用方式]
### --- Calendar类的概述
~~~ # 基本概念
~~~ ——> java.util.Calender类主要用于描述特定的瞬间,取代Date类中的过时方法实现全球化。
~~~ ——> 该类是个抽象类,因此不能实例化对象,其具体子类针对不同国家的日历系统,
~~~ ——> 其中应用最广泛的是GregorianCalendar(格里高利历),
~~~ ——> 对应世界上绝大多数国家/地区使用的标准日历系统。
二、常用的方法
方法声明 | 功能介绍 |
static Calendar getInstance() | 用于获取Calendar类型的引用 |
void set(int year, int month, int date, int hourOfDay, intminute, int second) |
用于设置年月日时分秒信息 |
Date getTime() | 用于将Calendar类型转换为Date类型 |
void set(int field, int value) | 设置指定字段的数值 |
void add(int field, int amount) | 向指定字段增加数值 |
三、多态的使用场合
### --- 多态的使用场合
——> 通过方法的参数传递形成多态;
——> public static void draw(Shape s){
——> s.show();
——> }
——> draw(new Rect(1, 2, 3, 4));
——> 在方法体中直接使用多态的语法格式
——> Account acc = new FixedAccount();
——> 通过方法的返回值类型形成多态
——> Calender getInstance(){
——> return new GregorianCalendar(zone, aLocale);
——> }
四、编程代码
package com.yanqi.task13;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class CalendarTest {
public static void main(String[] args) {
// 1.使用过时的方法按照指定的年月日时间分来构造对象
Date d1 = new Date(2008-1900, 8-1, 8, 20, 8, 8);
// 2.设置日期对象的格式并打印
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = sdf.format(d1);
System.out.println("获取到的时间是:" + format); // 2008 8 8 20 8 8
System.out.println("-----------------------------------------------------");
// 2.使用取代的方式按照指定的年月日时分秒来构造对象
// 2.1 获取Calendar类型的引用
// 考点:既然Calendar是个抽象类不能创建对象,那么下面的方法为啥可以获取Calendar类型的引用呢?
// 解析:由源码可知,返回的并不是Calendar类型的对象,而是Calendar类的子类GregorianCalendar等对象,形成了多态
// 多态的使用场合之三
Calendar instance = Calendar.getInstance();
// 2.2 设置指定的年月日时分秒信息
instance.set(2008, 8-1, 8, 20, 8, 8);
// 2.3 转换为Date类型的对象
Date d2 = instance.getTime();
String format1 = sdf.format(d2);
System.out.println("获取到的时间是:" + format1); // 2008 8 8 20 8 8
System.out.println("-----------------------------------------------------");
// 3.向指定的字段设置以及增加指定的数值
instance.set(Calendar.YEAR, 2018);
// 转换为Date类型并按照指定的格式打印
Date d3 = instance.getTime();
System.out.println("设置年份后的结果是:" + sdf.format(d3)); // 2018 8 8 20 8 8
instance.add(Calendar.MONTH, 2);
Date d4 = instance.getTime();
System.out.println("增加月份后的结果是:" + sdf.format(d4)); // 2018 10 8 20 8 8
}
}
五、编译打印
D:\JAVA\jdk-11.0.2\bin\java.exe "-javaagent:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=53170:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=UTF-8 -classpath E:\NO.Z.10000——javaproject\NO.H.00001.javase\javase\out\production\javase com.yanqi.task13.CalendarTest
获取到的时间是:2008-08-08 20:08:08
-----------------------------------------------------
获取到的时间是:2008-08-08 20:08:08
-----------------------------------------------------
设置年份后的结果是:2018-08-08 20:08:08
增加月份后的结果是:2018-10-08 20:08:08
Process finished with exit code 0
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通