java中强大的时间处理工具:Calendar类(日历类)

简介: `Calendar`类是Java中用来处理日期和时间的类,提供了许多属性来获取日期和时间的不同部分,如年、月、日、小时等。`Calendar`的常用属性包括`YEAR`(年)、`MONTH`(月)、`DATE`/`DAY_OF_MONTH`(日)、`DAY_OF_YEAR`(一年中的第几天)、`DAY_OF_WEEK_IN_MONTH`(一月中第几个星期)、`DAY_OF_WEEK`/`WEEK_OF_MONTH`(星期)等。

Calendar的常用属性

属性 作用
YEAR 年份
MONTH 月份
DATE 同DAY_OF_MONTH,日期
DAY_OF_MONTH 同DATE,日期
DAY_OF_YEAR 这一天是这一年中的第几天
DAY_OF_WEEK_IN_MONTH 当前月中的第几周
DAY_OF_WEEK 一周中的第几天 / 星期
HOUR 12小时制的时间
HOUR_OF_DAY 24小时制的时间
MINUTE 分钟数
SECOND 秒数
MILLISECOND 毫秒

Calendar的常用方法

方法 效果
public static Calendar getInstance(TimeZone zone,Locale aLocale) 获得一个日历对象
public int get(int field) 传入field字段获得给定日历字段的值
public final void set(int year,int month,int date,int hourOfDay,int minute,int second) 设置日历对象代表的时间
public final void setTime(Date date) 使用给定的 Date 设置此 Calendar 的时间。
public void setTimeInMillis(long millis) 用给定的 long 值设置此 Calendar 的当前时间值。
public final Date getTime() 返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。
public long getTimeInMillis() 返回此 Calendar 的时间值,以毫秒为单位。
public int getActualMaximum(int field)
传入Calendar.Date,得到这个月可能有多少天

接下来,举个例子:

package test;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

public class testCalendar {

   public static void main(String[] args) throws ParseException {

       Calendar c = Calendar.getInstance();

       System.out.println(c.getTime());

      // 获得年份

       System.out.println("现在是:" + c.get(Calendar.YEAR) + "年");

      // 获得月份

       System.out.println("现在是:" + (c.get(Calendar.MONTH)+1) + "月");

      //获得日期

       System.out.println("现在是:" + c.get(Calendar.DATE) + "号");

       System.out.println("现在是:" + c.get(Calendar.DAY_OF_MONTH) + "号");

      // 获得这是今年的第几天

       System.out.println("现在是今年第" + c.get(Calendar.DAY_OF_YEAR) + "天");

      // 获得今天周几

       System.out.println("现在是星期:" + (c.get(Calendar.DAY_OF_WEEK)-1) );

      // 获得今天是这个月的第几周

       System.out.println("现在是第:" + c.get(Calendar.DAY_OF_WEEK_IN_MONTH) + "周" );

      // 12小时制的时间

       System.out.println("现在是:" + c.get(Calendar.HOUR) + "点");

      // 24小时制的时间

       System.out.println("现在是:" + c.get(Calendar.HOUR_OF_DAY) + "点");

      // 分钟数

       System.out.println("现在是:" + c.get(Calendar.MINUTE) + "分");

      // 秒数

       System.out.println("现在是:" + c.get(Calendar.SECOND) + "秒");

      // 毫秒

       System.out.println("现在是:" + c.get(Calendar.MILLISECOND) + "毫秒");

       

       

       

       

       

       

       SimpleDateFormat dc = new SimpleDateFormat();

       dc.applyPattern("yyyy-MM-dd");

       Date d = dc.parse("2017-5-13");

       c.setTime(d);

       System.out.println("--------------------2017-5-13信息-----------------------");

      // 获得年份

       System.out.println("现在是:" + c.get(Calendar.YEAR) + "年");

      // 获得月份

       System.out.println("现在是:" + (c.get(Calendar.MONTH)+1) + "月");

      //获得日期

       System.out.println("现在是:" + c.get(Calendar.DATE) + "号");

       System.out.println("现在是:" + c.get(Calendar.DAY_OF_MONTH) + "号");

      // 获得这是今年的第几天

       System.out.println("现在是今年第" + c.get(Calendar.DAY_OF_YEAR) + "天");

      // 获得今天周几

       System.out.println("现在是星期:" + (c.get(Calendar.DAY_OF_WEEK)-1) );

      // 获得今天是这个月的第几周

       System.out.println("现在是第:" + c.get(Calendar.DAY_OF_WEEK_IN_MONTH) + "周" );

   }

}

运行结果如下:

Thu Apr 11 17:53:52 CST 2019

现在是:2019

现在是:4

现在是:11

现在是:11

现在是今年第101

现在是星期:4

现在是第:2

现在是:5

现在是:17

现在是:53

现在是:52

现在是:818毫秒

--------------------2017-5-13信息-----------------------

现在是:2017

现在是:5

现在是:13

现在是:13

现在是今年第133

现在是星期:6

现在是第:2

目录
相关文章
|
5天前
|
Java 开发者
Java面试题:请解释内存泄漏的原因,并说明如何使用Thread类和ExecutorService实现多线程编程,请解释CountDownLatch和CyclicBarrier在并发编程中的用途和区别
Java面试题:请解释内存泄漏的原因,并说明如何使用Thread类和ExecutorService实现多线程编程,请解释CountDownLatch和CyclicBarrier在并发编程中的用途和区别
10 0
|
5天前
|
监控 Java 开发者
Java面试题:如何使用JVM工具(如jconsole, jstack, jmap)来分析内存使用情况?
Java面试题:如何使用JVM工具(如jconsole, jstack, jmap)来分析内存使用情况?
14 2
|
5天前
|
安全 Java 开发者
Java面试题:什么是Java 15中的密封类以及其限制?还有哪些其他特性用于限制类继承的机制吗?
Java面试题:什么是Java 15中的密封类以及其限制?还有哪些其他特性用于限制类继承的机制吗?
12 1
|
5天前
|
设计模式 存储 安全
Java面试题:设计一个线程安全的单例类并解释其内存占用情况?使用Java多线程工具类实现一个高效的线程池,并解释其背后的原理。结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
Java面试题:设计一个线程安全的单例类并解释其内存占用情况?使用Java多线程工具类实现一个高效的线程池,并解释其背后的原理。结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
14 1
|
6天前
|
Java 调度
Calendar类在Java中的应用
Calendar类在Java中的应用
|
10天前
|
开发框架 Java Android开发
Java中的类反射与动态代理详解
Java中的类反射与动态代理详解
|
5天前
|
存储 运维 前端开发
Java面试题:什么是Java的异常处理机制?列举常见的异常类,并说明使用场景
Java面试题:什么是Java的异常处理机制?列举常见的异常类,并说明使用场景
15 0
|
5天前
|
安全 Java 数据处理
Java面试题:什么是Java中的Optional类及其使用场景?
Java面试题:什么是Java中的Optional类及其使用场景?
8 0
|
5天前
|
前端开发 Java 编译器
Java面试题:描述Java类的加载过程,包括加载、链接、初始化等阶段。
Java面试题:描述Java类的加载过程,包括加载、链接、初始化等阶段。
8 0
|
5天前
|
设计模式 安全 NoSQL
Java面试题:结合单例模式与Java内存管理,设计一个线程安全的单例类?分析Java多线程工具类ExecutorService与Java并发工具包中的工具类,设计一个Java并发框架的分布式锁实现
Java面试题:结合单例模式与Java内存管理,设计一个线程安全的单例类?分析Java多线程工具类ExecutorService与Java并发工具包中的工具类,设计一个Java并发框架的分布式锁实现
13 0