Calendar 类 GregorianCalendar 类

Calendar类

Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些。

Calendar类是一个抽象类,在实际使用时、只需要使用getInstance方法创建即可。


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设置

如果只设定某个字段,例如日期的值,则可以使用如下set方法:

public void set(int field,int value)

把 c1对象代表的日期设置为10号,其它所有的数值会被重新计算

c1.set(Calendar.DATE,10);

把c1对象代表的年份设置为2008年,其他的所有数值会被重新计算

c1.set(Calendar.YEAR,2008);

其他字段属性set的意义以此类推


Add设置

Calendar c1 = Calendar.getInstance();

把c1对象的日期加上10,也就是c1所表的日期的10天后的日期,其它所有的数值会被重新计算

c1.add(Calendar.DATE, 10);

把c1对象的日期减去10,也就是c1所表的日期的10天前的日期,其它所有的数值会被重新计算

c1.add(Calendar.DATE, -10);

其他字段属性的add的意义以此类推


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);// 获得秒
int day = c1.get(Calendar.DAY_OF_WEEK);// 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)



GregorianCalendar类

Calendar类实现了公历日历,GregorianCalendar是Calendar类的一个具体实现。

GregorianCalendar 类提供的一些有用的方法:


void add(int field, int amount) :根据日历规则,将指定的(有符号的)时间量添加到给定的日历字段中。
boolean equals(Object obj) :比较此 GregorianCalendar 与指定的 Object。
int get(int field) :获取指定字段的时间值
int getActualMaximum(int field) :返回当前日期,给定字段的最大值
int getActualMinimum(int field) :返回当前日期,给定字段的最小值
int getGreatestMinimum(int field) :返回此 GregorianCalendar 实例给定日历字段的最高的最小值。
int getLeastMaximum(int field) :返回此 GregorianCalendar 实例给定日历字段的最低的最大值
int getMaximum(int field) :返回此 GregorianCalendar 实例的给定日历字段的最大值。
Date getTime():获取日历当前时间。
long getTimeInMillis() :获取用长整型表示的日历的当前时间
TimeZone getTimeZone() :获取时区。
int getMinimum(int field) :返回给定字段的最小值。

boolean isLeapYear(int year):确定给定的年份是否为闰年。
void roll(int field, boolean up) :在给定的时间字段上添加或减去(上/下)单个时间单元,不更改更大的字段。
void set(int field, int value) :用给定的值设置时间字段。
void set(int year, int month, int date) :设置年、月、日的值。
void set(int year, int month, int date, int hour, int minute) :设置年、月、日、小时、分钟的值。
void set(int year, int month, int date, int hour, int minute, int second) :设置年、月、日、小时、分钟、秒的值。
void setGregorianChange(Date date) :设置 GregorianCalendar 的更改日期。
void setTime(Date date) :用给定的日期设置Calendar的当前时间。
void setTimeInMillis(long millis) :用给定的long型毫秒数设置Calendar的当前时间。
void setTimeZone(TimeZone value) :用给定时区值设置当前时区。
String toString() :返回代表日历的字符串。


实例

import java.util.*;
  
public class GregorianCalendarDemo {

   public static void main(String args[]) {
      String months[] = {
      "Jan", "Feb", "Mar", "Apr",
      "May", "Jun", "Jul", "Aug",
      "Sep", "Oct", "Nov", "Dec"};
      
      int year;
      // 初始化 Gregorian 日历
      // 使用当前时间和日期
      // 默认为本地时间和时区
      GregorianCalendar gcalendar = new GregorianCalendar();
      // 显示当前时间和日期的信息
      System.out.print("Date: ");
      System.out.print(months[gcalendar.get(Calendar.MONTH)]);
      System.out.print(" " + gcalendar.get(Calendar.DATE) + " ");
      System.out.println(year = gcalendar.get(Calendar.YEAR));
      System.out.print("Time: ");
      System.out.print(gcalendar.get(Calendar.HOUR) + ":");
      System.out.print(gcalendar.get(Calendar.MINUTE) + ":");
      System.out.println(gcalendar.get(Calendar.SECOND));
      
      // 测试当前年份是否为闰年
      if(gcalendar.isLeapYear(year)) {
         System.out.println("当前年份是闰年");
      }
      else {
         System.out.println("当前年份不是闰年");
      }
   }
}









参考资料:https://www.w3cschool.cn/java/java-date-time.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值