>[success] # Calender
1. java.util.Calender类主要用于描述特定的瞬间,取代Date类中的过时方法实现全球化,通过案例来看为Date 被取代
~~~
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateTest {
public static void main(String[] args) {
// 指定年月日生成时间 -- 此方法以过时
Date d1 = new Date(2022, 8, 8, 8, 8);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = sdf.format(d1);
System.out.println(format); // 3922-09-08 08:08:00
// 想打印真正的 2022-08-08 08:08:00 需要年减低掉1900 月剪掉1
d1 = new Date(2022 - 1900, 8 - 1, 8, 8, 8);
format = sdf.format(d1);
System.out.println(format); // 2022-08-08 08:08:00
}
}
~~~
2. 该类是个**抽象类**,因此不能**实例化对象**,其具体子类针对不同国家的日历系统
>[info] ## 常用的方法
|方法声明 |功能介绍|
| -- | -- |
|static Calendar getInstance()| 用于获取Calendar类型的引用|
|void set(int year, int month, int date, int hourOfDay, int minute, int second) |用于设置年月日时分秒信息|
|Date getTime()|用于将Calendar类型转换为Date类型|
|void set(int field, int value)| 设置指定字段的数值|
|void add(int field, int amount) |向指定字段增加数值|
~~~
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateTest {
public static void main(String[] args) {
// 抽象类不能直接new 创建对象
Calendar instance = Calendar.getInstance();
// 指定年月日是分秒
instance.set(2022, 8 - 1, 8, 8, 8, 8);
// 将Calendar 转换为 Date 格式
Date date = instance.getTime();
// 打印
SimpleDateFormat sft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = sft.format(date);
System.out.println(format); // 2022-08-08 08:08:08
// -----------------------------------------------
// 想设置当前对象指定 年月日时分秒 通过set 方法
instance.set(Calendar.YEAR, 2023);
// 将Calendar 转换为 Date 格式
date = instance.getTime();
// 打印
format = sft.format(date);
System.out.println(format); // 2023-08-08 08:08:08
// -----------------------------------------
// 设置年月日时分秒的增加
instance.add(Calendar.MONTH, 5);
// 将Calendar 转换为 Date 格式
date = instance.getTime();
// 打印
format = sft.format(date);
System.out.println(format); // 2024-01-08 08:08:08
}
}
~~~
>[danger] ##### 问答
1. 既然Calendar是个抽象类不能创建对象,那么下面的方法为啥可以获取Calendar类型的引用呢
~~~
由源码可知,返回的并不是Calendar类型的对象,而是Calendar类的子类GregorianCalendar等对象,形成了多态
Calender getInstance(){
return new GregorianCalendar(zone, aLocale);
}
~~~
- windows -- 环境变量
- Vscode -- 编写java
- 初始java
- java -- 关键字
- 编写第一个java程序
- java -- 注释
- 计算机存储 -- 进制
- java -- 类型
- java -- 变量
- 数字类型
- 布尔类型
- 字符类型
- 类型转换
- 双等比较是什么
- java -- 运算符
- 算数运算符
- 字符串拼接
- 关系/比较运算符
- 自增减运算符
- 逻辑运算符
- 三目运算
- 赋值运算符
- 移位运算符
- 位运算符
- 运算符优先级
- java -- 流程控制语句
- if /else if /if -- 判断
- switch case分支结构
- for -- 循环
- 用双重for循环
- while -- 循环
- do while -- 循环
- 案例练习
- java -- 数组
- 数组的存储
- 数组的增删改查
- 数组的特点
- 数组案例
- 二维数组
- 数组的工具方法
- java -- 方法
- java -- 方法的重载
- java -- 方法的调用流程
- java -- 类方法传参注意事项
- java -- 方法练习案例
- 对比 return break continue
- for each循环
- java -- 基础练习
- java -- 面向对象
- java -- 创建类和对象
- java -- 访问控制符
- java -- 类成员方法
- java -- 构造方法
- java -- this
- java -- 封装
- java -- 对象内存图
- java -- 创建对象案例
- java -- static
- java -- 继承
- super -- 关键字
- java -- 构造块和静态代码块
- java -- 重写
- java -- final
- java -- 多态
- java -- 抽象类
- java -- 接口
- 引用类型数据转换
- 综合案例
- java -- 内部类
- java -- 回调模式
- java -- 枚举类型
- java -- switch 使用枚举
- java -- 枚举方法使用
- java -- 枚举类实现接口
- java -- javaBean
- java -- package 包
- java -- import
- java -- 递归练习
- java -- 设计模式
- 单例模式
- java -- 注解
- java -- 元注解
- Java -- 核心类库
- java -- 处理字符串
- Java -- String
- String -- 常用方法
- String -- 正则
- Java -- StringBuilder 和 StringBuffer
- 知识点
- Java -- StringJoiner 字符串拼接
- 练习题
- 字符串的总结
- Java -- 包装类
- Integer
- Double
- Boolean
- Character
- java -- 集合类
- java -- util.Collection
- Iterator接口
- java -- util.List
- java -- ArrayList
- java -- util.Queue
- java -- util.Set
- java -- util.Map
- java -- util.Collections
- Java -- Math
- Java -- java.lang
- Java -- Object
- Java -- 获取当前时间戳
- Java -- 异常
- Java -- java.util
- java -- Date
- java -- Calender
- Java -- java.text
- Java -- SimpleDateFormat
- Java -- java.time
- Java -- java.io
- java -- io.File
- java -- 泛型
- IDEA -- 用法