Java 日历类



介绍

Java Calendar 类是一个抽象类,它提供了一些方法用于在特定时间点和一组日历字段(如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等)之间进行转换,以及操作日历字段,例如获取下一周的日期。以下关于 Calendar 的要点:

  • 此类还提供其他字段和方法,用于在包外实现具体的日历系统。

  • Calendar 定义了某些日历字段返回的值范围。

类声明

以下是 java.util.Calendar 类的声明:

public abstract class Calendar
   extends Object
   implements Serializable, Cloneable, Comparable<Calendar>

字段

以下是 java.util.Calendar 类的字段:

  • static int ALL_STYLES − 这是 getDisplayNames 指示所有样式的名称(例如“January”和“Jan”)的样式说明符。

  • static int AM − 这是 AM_PM 字段的值,指示从午夜到中午之前的时间段。

  • static int AM_PM − 这是 get 和 set 指示 HOUR 是在中午之前还是之后字段编号。

  • static int APRIL − 这是 MONTH 字段的值,指示公历和儒略历中一年中的第四个月。

  • protected boolean areFieldsSet − 如果 fields[] 与当前设置的时间同步,则为 true。

  • static int AUGUST − 这是 MONTH 字段的值,指示公历和儒略历中一年中的第八个月。

  • static int DATE − 这是 get 和 set 指示一个月中的日期字段编号。

  • static int DAY_OF_MONTH − 这是 get 和 set 指示一个月中的日期字段编号。

  • static int DAY_OF_WEEK − 这是 get 和 set 指示一周中的日期字段编号。

  • static int DAY_OF_WEEK_IN_MONTH − 这是 get 和 set 指示当前月中星期几的序数字段编号。

  • static int DAY_OF_YEAR − 这是 get 和 set 指示当前年中第几天字段编号。

  • static int DECEMBER − 这是 MONTH 字段的值,指示公历和儒略历中一年中的第十二个月。

  • static int DST_OFFSET − 这是 get 和 set 指示夏令时偏移量(以毫秒为单位)字段编号。

  • static int ERA − 这是 get 和 set 指示纪元(例如,儒略历中的公元或公元前)字段编号。

  • static int FEBRUARY − 这是 MONTH 字段的值,指示公历和儒略历中一年中的第二个月。

  • static int FIELD_COUNT − 这是 get 和 set 识别的不同字段的数量。

  • protected int[] fields − 这是此日历当前设置时间的日历字段值。

  • static int FRIDAY − 这是 DAY_OF_WEEK 字段的值,指示星期五。

  • static int HOUR − 这是 get 和 set 指示上午或下午的小时字段编号。

  • static int HOUR_OF_DAY − 这是 get 和 set 指示一天中的小时字段编号。

  • protected boolean[] isSet − 这些是标志,指示日历的指定日历字段是否已设置。

  • protected boolean isTimeSet − 如果时间值有效,则为 true。

  • static int JANUARY − 这是 MONTH 字段的值,指示公历和儒略历中一年中的第一个月。

  • static int JULY − 这是 MONTH 字段的值,指示公历和儒略历中一年中的第七个月。

  • static int JUNE − 这是 MONTH 字段的值,指示公历和儒略历中一年中的第六个月。

  • static int LONG − 这是 getDisplayName 和 getDisplayNames 指示长名称(例如“January”)的样式说明符。

  • static int MARCH − 这是 MONTH 字段的值,指示公历和儒略历中一年中的第三个月。

  • static int MAY − 这是 MONTH 字段的值,指示公历和儒略历中一年中的第五个月。

  • static int MILLISECOND − 这是 get 和 set 指示秒内毫秒字段编号。

  • static int MINUTE − 这是 get 和 set 指示小时内的分钟字段编号。

  • static int MONDAY − 这是 DAY_OF_WEEK 字段的值,指示星期一。

  • static int MONTH − 这是 get 和 set 指示月份字段编号。

  • static int NOVEMBER − 这是 MONTH 字段的值,指示公历和儒略历中一年中的第十一个月。

  • static int OCTOBER − 这是 MONTH 字段的值,指示公历和儒略历中一年中的第十个月。

  • static int PM − 这是 AM_PM 字段的值,指示从中午到午夜之前的时间段。

  • static int SATURDAY − 这是 DAY_OF_WEEK 字段的值,指示星期六。

  • static int SECOND − 这是 get 和 set 指示分钟内的秒字段编号。

  • static int SEPTEMBER − 这是 MONTH 字段的值,指示公历和儒略历中一年中的第九个月。

  • static int SHORT − 这是 getDisplayName 和 getDisplayNames 指示短名称(例如“Jan”)的样式说明符。

  • static int SUNDAY − 这是 DAY_OF_WEEK 字段的值,指示星期日。

  • static int THURSDAY − 这是 DAY_OF_WEEK 字段的值,指示星期四。

  • protected long time − 这是此日历的当前设置时间,以 1970 年 1 月 1 日 0:00:00 GMT 之后的毫秒数表示。

  • static int TUESDAY − 这是 DAY_OF_WEEK 字段的值,指示星期二。

  • static int UNDECIMBER − 这是 MONTH 字段的值,指示一年中的第十三个月。

  • static int WEDNESDAY − 这是 DAY_OF_WEEK 字段的值,指示星期三。

  • static int WEEK_OF_MONTH − 这是 get 和 set 指示当前月中星期数字段编号。

  • static int WEEK_OF_YEAR − 这是 get 和 set 指示当前年中星期数字段编号。

  • static int YEAR − 这是 get 和 set 指示年份字段编号。

  • static int ZONE_OFFSET − 这是 get 和 set 指示与 GMT 的原始偏移量(以毫秒为单位)字段编号。

类构造函数

序号 构造函数及描述
1

protected Calendar()

此构造函数使用默认时区和区域设置构造一个日历。

2

protected Calendar(TimeZone zone, Locale aLocale)

此构造函数使用指定的时区和区域设置构造一个日历。

类方法

序号 方法及描述
1 abstract void add(int field, int amount)

此方法根据日历的规则,将指定的时间量加到或减去给定的日历字段。

2 boolean after(Object when)

此方法返回此 Calendar 是否表示一个时间在指定 Object 表示的时间之后。

3 boolean before(Object when)

此方法返回此 Calendar 是否表示一个时间在指定 Object 表示的时间之前。

4 void clear()

此方法将此 Calendar 的所有日历字段值和时间值(距纪元的毫秒偏移量)设置为未定义。

6 Object clone()

此方法创建并返回此对象的副本。

7 int compareTo(Calendar anotherCalendar)

此方法比较两个 Calendar 对象表示的时间值(距纪元的毫秒偏移量)。

8 boolean equals(Object obj)

此方法将此 Calendar 与指定的 Object 进行比较。

9 int get(int field)

此方法返回给定日历字段的值。

10 int getActualMaximum(int field)

此方法返回指定日历字段在给定此 Calendar 的时间值的情况下可能具有的最大值。

11 int getActualMinimum(int field)

此方法返回指定日历字段在给定此 Calendar 的时间值的情况下可能具有的最小值。

12 static Set<String> getAvailableCalendarTypes()

此方法返回一个不可修改的 Set,其中包含运行时环境中 Calendar 支持的所有日历类型。

13 static Locale[] getAvailableLocales()

此方法返回一个数组,其中包含此类的 getInstance 方法可以返回本地化实例的所有区域设置。

14 String getCalendarType()

此方法返回此 Calendar 的日历类型。

15 String getDisplayName(int field, int style, Locale locale)

此方法返回给定样式和区域设置中日历字段值的字符串表示形式。

16 Map<String,Integer> getDisplayNames(int field, int style, Locale locale)

此方法返回一个 Map,其中包含给定样式和区域设置中日历字段的所有名称及其对应的字段值。

17 int getFirstDayOfWeek()

此方法获取一周的第一天是什么;例如,在美国为星期日,在法国为星期一。

18 abstract int getGreatestMinimum(int field)

此方法返回此 Calendar 实例的给定日历字段的最高最小值。

19 static Calendar getInstance()

此方法使用默认时区和区域设置获取一个日历。

20 abstract int getLeastMaximum(int field)

此方法返回此 Calendar 实例的给定日历字段的最低最大值。

21 abstract int getMaximum(int field)

此方法返回此 Calendar 实例的给定日历字段的最大值。

22 int getMinimalDaysInFirstWeek()

此方法获取一年中第一周所需的最小天数;例如,如果第一周定义为包含一年中第一个月的第一天的那一周,则此方法返回 1。

23 abstract int getMinimum(int field)

此方法返回此 Calendar 实例的给定日历字段的最小值。

24 Date getTime()

此方法返回一个 Date 对象,该对象表示此 Calendar 的时间值(自纪元以来的毫秒偏移量)。

25 long getTimeInMillis()

此方法以毫秒为单位返回此 Calendar 的时间值。

26 TimeZone getTimeZone()

此方法获取时区。

27 int hashCode()

此方法返回此日历的哈希码。

28 boolean isLenient()

此方法指示日期/时间解释是否应宽松。

29 boolean isSet(int field)

此方法确定给定的日历字段是否已设置值,包括由 get 方法调用触发的内部字段计算所设置的值的情况。

30 abstract void roll(int field, boolean up)

此方法在给定的时间字段上添加或减去(向上/向下)一个时间单位,而不更改更大的字段。

31 void set(int field, int value)

此方法将给定的日历字段设置为给定的值。

32 void setFirstDayOfWeek(int value)

此方法设置一周的第一天是什么;例如,在美国为星期日,在法国为星期一。

33 void setLenient(boolean lenient)

此方法指定日期/时间解释是否应宽松。

34 void setMinimalDaysInFirstWeek(int value)

此方法设置一年中第一周所需的最小天数;例如,如果第一周定义为包含一年中第一个月的第一天的那一周,则使用 value 调用此方法。

35 void setTime(Date date)

此方法使用给定的 Date 设置此 Calendar 的时间。

36 void setTimeInMillis(long millis)

此方法根据给定的 long 值设置此 Calendar 的当前时间。

37 void setTimeZone(TimeZone value)

此方法使用给定的时区值设置时区。

38 void setWeekDate​(int weekYear, int weekOfYear, int dayOfWeek)

此方法使用给定的日期说明符(周年的年份、一年中的周数和一周中的天数)设置此 Calendar 的日期。

39 Instant toInstant

此方法将此对象转换为 Instant。

40 String toString()

此方法返回此日历的字符串表示形式。

继承的方法

此类继承自以下类:-

  • java.util.Object

检查日期是否在给定日期之后示例

以下示例显示了 Java Calendar after() 方法的用法。我们正在创建当前日期的两个 Calendar 实例。其中一个日历被修改为将来日期,然后使用 after() 方法进行比较。

package com.tutorialspoint;

import java.util.Calendar;
import java.util.Date;

public class CalendarDemo {
   public static void main(String[] args) {
   
      // create calendar objects.
      Calendar cal = Calendar.getInstance();
      Calendar future = Calendar.getInstance();

      // print the current date
      System.out.println("Current date: " + cal.getTime());

      // change year in future calendar
      future.set(Calendar.YEAR, 2025);
      System.out.println("Year is " + future.get(Calendar.YEAR));

      // check if calendar date is after current date
      Date time = future.getTime();
      
      if (future.after(cal)) {
         System.out.println("Date " + time + " is after current date.");
      }
   }
}

让我们编译并运行上述程序,这将产生以下结果:-

Current date: Fri Sep 23 14:35:06 IST 2022
Year is 2025
Date Tue Sep 23 14:35:06 IST 2025 is after current date.
广告