Java常用api-Calendar类

简介: Calendar类

第三章 Calendar类

3.1 概述

  • java.util.Calendar类表示一个“日历类”,可以进行日期运算。它是一个抽象类,不能创建对象,我们可以使用它的子类:java.util.GregorianCalendar类。
  • 有两种方式可以获取GregorianCalendar对象:
  • 直接创建GregorianCalendar对象;
  • 通过Calendar的静态方法getInstance()方法获取GregorianCalendar对象【本次课使用】

3.2 常用方法

方法名 说明
public static Calendar getInstance() 获取一个它的子类GregorianCalendar对象。
public int get(int field) 获取某个字段的值。field参数表示获取哪个字段的值,可以使用Calender中定义的常量来表示:Calendar.YEAR : 年Calendar.MONTH :月Calendar.DAY_OF_MONTH:月中的日期Calendar.HOUR:小时Calendar.MINUTE:分钟Calendar.SECOND:秒Calendar.DAY_OF_WEEK:星期
public void set(int field,int value) 设置某个字段的值
public void add(int field,int amount) 为某个字段增加/减少指定的值

3.3 get方法示例

public class Demo {

   public static void main(String[] args) {

       //1.获取一个GregorianCalendar对象

       Calendar instance = Calendar.getInstance();//获取子类对象

       //2.打印子类对象

       System.out.println(instance);

       //3.获取属性

       int year = instance.get(Calendar.YEAR);

       int month = instance.get(Calendar.MONTH) + 1;//Calendar的月份值是0-11

       int day = instance.get(Calendar.DAY_OF_MONTH);

       int hour = instance.get(Calendar.HOUR);

       int minute = instance.get(Calendar.MINUTE);

       int second = instance.get(Calendar.SECOND);

       int week = instance.get(Calendar.DAY_OF_WEEK);//返回值范围:1--7,分别表示:"星期日","星期一","星期二",...,"星期六"

       System.out.println(year + "年" + month + "月" + day + "日" +  

                           hour + ":" + minute + ":" + second);

       System.out.println(getWeek(week));

   }

   //查表法,查询星期几

   public static String getWeek(int w) {//w = 1 --- 7

       //做一个表(数组)

       String[] weekArray = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};

       //            索引      [0]      [1]       [2]      [3]       [4]      [5]      [6]

       //查表

       return weekArray[w - 1];

   }

}

3.4 set方法示例:

public class Demo {

   public static void main(String[] args) {

       //设置属性——set(int field,int value):

       Calendar c1 = Calendar.getInstance();//获取当前日期

       //计算班长出生那天是星期几(假如班长出生日期为:1998年3月18日)

       c1.set(Calendar.YEAR, 1998);

       c1.set(Calendar.MONTH, 3 - 1);//转换为Calendar内部的月份值

       c1.set(Calendar.DAY_OF_MONTH, 18);

       int w = c1.get(Calendar.DAY_OF_WEEK);

       System.out.println("班长出生那天是:" + getWeek(w));

       

   }

   //查表法,查询星期几

   public static String getWeek(int w) {//w = 1 --- 7

       //做一个表(数组)

       String[] weekArray = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};

       //            索引      [0]      [1]       [2]      [3]       [4]      [5]      [6]

       //查表

       return weekArray[w - 1];

   }

}

3.5 add方法示例:

public class Demo {

   public static void main(String[] args) {

       //计算200天以后是哪年哪月哪日,星期几?

       Calendar c2 = Calendar.getInstance();//获取当前日期

       c2.add(Calendar.DAY_OF_MONTH, 200);//日期加200

       int y = c2.get(Calendar.YEAR);

       int m = c2.get(Calendar.MONTH) + 1;//转换为实际的月份

       int d = c2.get(Calendar.DAY_OF_MONTH);

       int wk = c2.get(Calendar.DAY_OF_WEEK);

       System.out.println("200天后是:" + y + "年" + m + "月" + d + "日" + getWeek(wk));

   }

   //查表法,查询星期几

   public static String getWeek(int w) {//w = 1 --- 7

       //做一个表(数组)

       String[] weekArray = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};

       //            索引      [0]      [1]       [2]      [3]       [4]      [5]      [6]

       //查表

       return weekArray[w - 1];

   }

}


相关文章
|
9天前
|
Java API Spring
打造未来电商新引擎:揭秘Java可扩展API设计,让支付与物流灵活如丝,引领电商时代潮流!
【8月更文挑战第30天】本文通过电商平台案例,探讨了如何设计可扩展的Java API。首先定义支付和物流服务的接口与抽象类,然后实现具体服务,接着引入工厂模式或依赖注入管理服务实例,最后通过配置实现灵活扩展。这种设计确保了应用架构的灵活性和长期稳定性。
25 3
|
10天前
|
安全 Java API
告别繁琐编码,拥抱Java 8新特性:Stream API与Optional类助你高效编程,成就卓越开发者!
【8月更文挑战第29天】Java 8为开发者引入了多项新特性,其中Stream API和Optional类尤其值得关注。Stream API对集合操作进行了高级抽象,支持声明式的数据处理,避免了显式循环代码的编写;而Optional类则作为非空值的容器,有效减少了空指针异常的风险。通过几个实战示例,我们展示了如何利用Stream API进行过滤与转换操作,以及如何借助Optional类安全地处理可能为null的数据,从而使代码更加简洁和健壮。
34 0
|
1天前
|
安全 Java API
【性能与安全的双重飞跃】JDK 22外部函数与内存API:JNI的继任者,引领Java新潮流!
【9月更文挑战第7天】JDK 22外部函数与内存API的发布,标志着Java在性能与安全性方面实现了双重飞跃。作为JNI的继任者,这一新特性不仅简化了Java与本地代码的交互过程,还提升了程序的性能和安全性。我们有理由相信,在外部函数与内存API的引领下,Java将开启一个全新的编程时代,为开发者们带来更加高效、更加安全的编程体验。让我们共同期待Java在未来的辉煌成就!
21 11
|
2天前
|
安全 Java API
【本地与Java无缝对接】JDK 22外部函数和内存API:JNI终结者,性能与安全双提升!
【9月更文挑战第6天】JDK 22的外部函数和内存API无疑是Java编程语言发展史上的一个重要里程碑。它不仅解决了JNI的诸多局限和挑战,还为Java与本地代码的互操作提供了更加高效、安全和简洁的解决方案。随着FFM API的逐渐成熟和完善,我们有理由相信,Java将在更多领域展现出其强大的生命力和竞争力。让我们共同期待Java编程新纪元的到来!
23 11
|
1天前
|
Java API 数据处理
【Java的SIMD革命】JDK 22向量API:释放硬件潜能,让Java应用性能飙升!
【9月更文挑战第7天】 JDK 22向量API的发布标志着Java编程语言在SIMD技术领域的重大突破。这一新特性不仅释放了现代硬件的潜能,更让Java应用性能实现了飙升。我们有理由相信,在未来的发展中,Java将继续引领编程语言的潮流,为开发者们带来更加高效、更加强大的编程体验。让我们共同期待Java在SIMD技术的推动下开启一个全新的性能提升时代!
|
2天前
|
Java API 开发者
【Java字节码操控新篇章】JDK 22类文件API预览:解锁Java底层的无限可能!
【9月更文挑战第6天】JDK 22的类文件API为Java开发者们打开了一扇通往Java底层世界的大门。通过这个API,我们可以更加深入地理解Java程序的工作原理,实现更加灵活和强大的功能。虽然目前它还处于预览版阶段,但我们已经可以预见其在未来Java开发中的重要地位。让我们共同期待Java字节码操控新篇章的到来!
|
1天前
|
Java
Java 对象和类
在Java中,**类**(Class)和**对象**(Object)是面向对象编程的基础。类是创建对象的模板,定义了属性和方法;对象是类的实例,通过`new`关键字创建,具有类定义的属性和行为。例如,`Animal`类定义了`name`和`age`属性及`eat()`、`sleep()`方法;通过`new Animal()`创建的`myAnimal`对象即可调用这些方法。面向对象编程通过类和对象模拟现实世界的实体及其关系,实现问题的结构化解决。
|
9天前
|
Java API
Java 8新特性:Lambda表达式与Stream API的深度解析
【7月更文挑战第61天】本文将深入探讨Java 8中的两个重要特性:Lambda表达式和Stream API。我们将首先介绍Lambda表达式的基本概念和语法,然后详细解析Stream API的使用和优势。最后,我们将通过实例代码演示如何结合使用Lambda表达式和Stream API,以提高Java编程的效率和可读性。
|
12天前
|
机器学习/深度学习 人工智能 算法
探索人工智能在医疗诊断中的应用与挑战Java编程中的对象和类:基础与实践
【8月更文挑战第27天】随着人工智能(AI)技术的飞速发展,其在医疗领域的应用日益广泛。本文深入探讨了AI技术在医疗诊断中的具体应用案例,包括图像识别、疾病预测和药物研发等方面,并分析了当前面临的主要挑战,如数据隐私、算法偏见和法规限制等。文章旨在为读者提供一个全面的视角,理解AI在改善医疗服务质量方面的潜力及其局限性。
|
12天前
|
Java Spring 容器
Java获取接口的所有实现类方法
这篇文章介绍了在Java中获取接口所有实现类的方法,包括使用JDK的ServiceLoader(SPI机制)和Spring Boot中的@Autowired自动注入及ApplicationContextAware接口两种方式。
32 1
下一篇
DDNS