关于日期类Calendar的相关使用介绍

一、Calendar介绍

Calendar 类是一个抽象类(在这里和DataFormat一样,也是抽象类),它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。Calendar英文含义为日历、挂历、日程表。

首先它是一个抽象类

从源码也可以看出,Calendar是一个抽象类,并且实现了Serializable,Cloneable等接口

用特定的日历算法对时间进行出来,可以获取到年、月、小时、天、周等等

可以确定一周中的第几天,还可以确定一年中的第几周,一年中的第几天等等,下面举一个具体使用

 

Calendar类对象字段类型

Calendar类中用以下这些常量表示不同的意义,jdk内的很多类其实都是采用的这种思想

常量描述
Calendar.YEAR年份
Calendar.MONTH月份
Calendar.DATE日期
Calendar.DAY_OF_MONTH日期,和上面的字段意义完全相同
Calendar.HOUR12小时制的小时
Calendar.HOUR_OF_DAY24小时制的小时
Calendar.MINUTE分钟
Calendar.SECOND
Calendar.DAY_OF_WEEK星期几

 

 

Calendar类对象信息的设置

Set设置

Calendar c1 = Calendar.getInstance();

调用:

public final void set(int year,int month,int date)
c1.set(2009, 6, 12);//把Calendar对象c1的年月日分别设这为:2009、6、12

Calendar类对象信息的获得

Calendar c1 = Calendar.getInstance();
// 获得年份
int year = c1.get(Calendar.YEAR);
// 获得月份
int month = c1.get(Calendar.MONTH) + 1;
// 获得日期
int date = c1.get(Calendar.DATE);
// 获得小时
int hour = c1.get(Calendar.HOUR_OF_DAY);
// 获得分钟
int minute = c1.get(Calendar.MINUTE);
// 获得秒
int second = c1.get(Calendar.SECOND);
// 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
int day = c1.get(Calendar.DAY_OF_WEEK);

 

使用 SimpleDateFormat 格式化日期

SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行。例如:

import  java.util.*;
import java.text.*;
 
public class DateDemo {
   public static void main(String args[]) {
 
      Date dNow = new Date( );
      SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");
 
      System.out.println("当前时间为: " + ft.format(dNow));
   }
}

二、代码测试

public class Test {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        //这个月的第几天,也就是第几号
        int day = calendar.get(Calendar.DATE);
        //获取当前日期的月份
        int month = calendar.get(Calendar.MONTH)+1;
        //获取当前日期的年份
        int year = calendar.get(Calendar.YEAR);

        //获取当前时间是一年中的第几周
        int week_of_year = calendar.get(Calendar.WEEK_OF_YEAR);

        //当月的第几号
        int day_of_month = calendar.get(Calendar.DAY_OF_MONTH);

        //一年中的第几天
        int day_of_year = calendar.get(Calendar.DAY_OF_YEAR);


        System.out.println(year+"-"+month+"-"+day);
        System.out.println("一年中第几周:"+week_of_year);
        System.out.println("当月的第几号:"+day_of_month);
        System.out.println("一年中的第几天:"+day_of_year);
    }
}

 

输出结果:

 

这个日历类对获取时间、时间处理还是很方便的,当然还有很多其他的用法,如自定义set()方法,还有对时间上下午的处理

 

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页