• Calendar 加减


    /*
    * @author  
    * 2005-12-14
    */
             Calendar calendar = Calendar.getInstance();
             //getTime()方法是取得当前的日期,其返回值是一个java.util.Date类的对象
             res.setResOpenDate(calendar.getTime());
             int day = calendar.get(Calendar.DAY_OF_YEAR);
             calendar.set(Calendar.DAY_OF_YEAR, day + 30);
             //投票的有效期30天
             res.setResEndDate(calendar.getTime());
    ²     详细说明
    ⑴Calendar是java.util.* 中的一个类,所以在使用前,我们要导入包java.util.*;
    //产生一个日历类的对象,我们不能使用new Calendar()来构造实例,因为//Calendar的构造函数都是protected,也就是说,构造函数是保护成员。
    ⑵关于Calendar的Filed
    在Calendar中定义了日历的各个成员,比如:年,月,日,包括不同的记录方法,比如:同一天(2005-12-14)来说,在记录的时候,我们可以 说是一周中的周三,是12月的第14天,是2005年的第****(你可以自己算一下)天。这就是不同的记录方法,所以在Calendar中就有了不同的 定义:

         public final static int ERA = 0;
         public final static int YEAR = 1;
         public final static int MONTH = 2;
         public final static int WEEK_OF_YEAR = 3;
         public final static int WEEK_OF_MONTH = 4;
         public final static int DATE = 5;
         public final static int DAY_OF_MONTH = 5;
         public final static int DAY_OF_YEAR = 6;
         public final static int DAY_OF_WEEK = 7;
         public final static int DAY_OF_WEEK_IN_MONTH = 8;
         public final static int AM_PM = 9;
         public final static int HOUR = 10;
         public final static int HOUR_OF_DAY = 11;
         public final static int MINUTE = 12;
         public final static int SECOND = 13;

    这些定义是不同记录方法的标识,在此我没有列举完全,感兴趣的话你可以看一下Calendar的源代码。
    这些就是Calendar的Field,根据你的不同需求就可以去处不同的Field,不同的记录方法也是不同的的Filed,这样应该是好理解一些。
    有了这些,我们就可以取得你想要的任何需要的东西了,如果你想知道今天是一年中的哪一天,就可以用:
    int day = calendar.get(Calendar.DAY_OF_YEAR);
    参数就是你想取得的Field,所有的这些都在Calendar中定义好了。
    结果会告诉我们2005-12-14是2005年的第348天。
    然后你想知道30天后是几号呢?
    calendar.set(Calendar.DAY_OF_YEAR, day + 30);
    在这,你不需要去考虑12-14号加上30天是一月,是不是会出错,不会的,Calendar自己知道那一天是几月几号。

    方法

    getInstance

    public static synchronized Calendar getInstance()
    用缺省时区和语言环境获得一个日历。
    返回值:
    一个 Calendar。

    getInstance

    public static synchronized Calendar getInstance(TimeZone zone)
    用给定时区和缺省语言环境获得一个日历。
    参数:
    zone - 给定的时区。
    返回值:
    一个 Calendar。

    getInstance

    public static synchronized Calendar getInstance(Locale aLocale)
    用缺省时区和给定语言环境获得一个日历。
    参数:
    aLocale - 给定的语言环境。
    返回值:
    一个 Calendar。

    getInstance

    public static synchronized Calendar getInstance(TimeZone zone,
    Locale aLocale)
    用给定时区和给定语言环境获得一个日历。
    参数:
    zone - 给定的时区。
    aLocale - 给定的语言环境。
    返回值:
    一个 Calendar。

    getAvailableLocales

    public static synchronized Locale[] getAvailableLocales()
    获得安装 Calendars 的语言环境集合。
    返回值:
    安装 Calendars 的语言环境集合。

    computeTime

    protected abstract void computeTime()
    将日历的时间域作为毫秒值转换为 UTC。

    computeFields

    protected abstract void computeFields()
    将 UTC 作为毫秒值转换为时间域值。 允许使时间域值与日历设置的新时间同步。 开始重新计算该时间;为了重新计算时间和域,调用 complete方法。
    参见:
    complete

    getTime

    public final Date getTime()
    获得日历的当前时间。
    返回值:
    当前的时间。

    setTime

    public final void setTime(Date date)
    用给定的 Date 设置 Calendar 的当前时间。
    参数:
    date - 给定的 Date。

    getTimeInMillis

    protected long getTimeInMillis()
    获得日历的作为长整型的当前时间。
    返回值:
    当前时间,作为从开始时间的 UTC 毫秒值。

    setTimeInMillis

    protected void setTimeInMillis(long millis)
    用给定的长整数设置 Calendar 的当前时间。
    参数:
    date - 新时间,从开始时间的 UTC 毫秒时间。

    get

    public final int get(int field)
    获得给定时间域的值。
    参数:
    field - 给定的时间域。
    返回值:
    给定的时间域值。

    internalGet

    protected final int internalGet(int field)
    获取给定时间域的值。 这是子类的一个内部快速时间域值 getter。
    参数:
    field - 给定的时间域。
    返回值:
    给定的时间域值。

    set

    public final void set(int field,
    int value)
    用给定的值设置时间域。
    参数:
    field - 给定的时间域。
    value - 要设置的给定时间域的值。

    set

    public final void set(int year,
    int month,
    int date)
    设置年、月、日期域的数值。 保留其它域上次的值。 如果不需要保留,首先调用 clear
    参数:
    year - 用于设置 YEAR 时间域的值。
    month - 用于设置 MONTH 时间域的值。 Month 值以 0 开始。 例如,0 代表一月。
    date - 用于设置 DATE 时间域的值。

    set

    public final void set(int year,
    int month,
    int date,
    int hour,
    int minute)
    设置年、月、日期、时和分域的数值。 保留其它域上次的值。 如果不需要保留,首先调用 clear
    参数:
    year - 用于设置 YEAR 时间域的值。
    month - 用于设置 MONTH 时间域的值。 Month 值以 0 开始。 例如,0 代表一月。
    date - 用于设置 DATE 时间域的值。
    hour - 用于设置 HOUR 时间域的值。
    minute - 用于设置 MINUTE 时间域的值。

    set

    public final void set(int year,
    int month,
    int date,
    int hour,
    int minute,
    int second)
    设置年、月、日期、时、分和秒域的数值。 保留其它域上次的值。 如果不需要保留,首先调用 clear
    参数:
    year - 用于设置 YEAR 时间域的值。
    month - 用于设置 MONTH 时间域的值。 Month 值以 0 开始。 例如,0 代表一月。
    date - 用于设置 DATE 时间域的值。
    hour - 用于设置 HOUR 时间域的值。
    minute - 用于设置 MINUTE 时间域的值。
    second - 用于设置 SECOND 时间域的值。

    clear

    public final void clear()
    将所有时间域值清零。

    clear

    public final void clear(int field)
    将给定的时间域值清零。
    参数:
    field - 要清零的时间域。

    isSet

    public final boolean isSet(int field)
    确定给定的时间域是否设置了数值。
    返回值:
    如果给定的时间域设置了数值则返回 true;否则返回 false。

    complete

    protected void complete()
    填充时间域列表中所有未设置的域。

    equals

    public abstract boolean equals(Object obj)
    比较该日历和指定的对象。 当且仅当参数不为 null 而是与该对象描述同一日历的 Calendar 对象,结果为 true
    参数:
    obj - 比较的对象。
    返回值:
    如果对象相同则为 true,否则为 false
    覆盖:
    类 Object 中的 equals

    before

    public abstract boolean before(Object when)
    比较时间域记录。 等价于比较转换到 UTC 的结果。
    参数:
    when - 与该 Calendar 比较的 Calendar。
    返回值:
    如果当前时间在 Calendar when 的时间之前则为 true;否则为 false。

    after

    public abstract boolean after(Object when)
    比较时间域记录。 等价于比较转换到 UTC 的结果。
    参数:
    when - 与该 Calendar 比较的 Calendar。
    返回值:
    如果该日历的当前时间在 Calendar when 的时间之后则为 true;否则为 false。

    add

    public abstract void add(int field,
    int amount)
    日期的计算功能。 按照日历的规则,将指定 ( 带符号的 ) 数量的时间添加到给定的时间域。 例如,从日历的当前时间减 5 ,可调用:

    add(Calendar.DATE, -5)。

    参数:
    field - 时间域。
    amount - 添加到该域的日期和时间的数量。

    roll

    public abstract void roll(int field,
    boolean up)
    时间域滚动功能。 在给定的时间域上 ( 向上 / 向下 ) 滚动一个单个的时间单元。 例如,为了将当前日期向上滚动一天,可调用:

    roll(Calendar.DATE, true)。 当在年或 Calendar.YEAR 域滚动时,年值将在 1 和调用 getMaximum(Calendar.YEAR) 的返回值之间滚动。 当在月或 Calendar.MONTH 域滚动时,其它的域,例如日期,可能会发生冲突需要改变。 例如,将日期 01/31/96 滚动一月结果是 03/02/96。 当在小时域或 Calendar.HOUR_OF_DAY 域滚动,小时值将在范围 0 到 23 之间滚动,它以 0 开始。

    参数:
    field - 时间域。
    up - 指明指定时间域值向上还是向下滚动。 如果向上滚动用 true ,否则用 false。

    setTimeZone

    public void setTimeZone(TimeZone value)
    用给定的时区值设置时区。
    参数:
    value - 给定的时区。

    getTimeZone

    public TimeZone getTimeZone()
    获得时区。
    返回值:
    与日历相应的时区对象。

    setLenient

    public void setLenient(boolean lenient)
    指明对日期/时间的解释是否是宽松的。 在宽松的解释下,一个诸如 "February 942, 1996" 的日期将被看作与1996 年 2 月后的第 941 天等价。 在严格的解释下,这样的日期将引起抛出异常。
    参见:
    setLenient

    isLenient

    public boolean isLenient()
    指明对日期/时间的解释是否是宽松的。

    setFirstDayOfWeek

    public void setFirstDayOfWeek(int value)
    设置一周的第一天;例如在美国为 Sunday,在法国为 Monday。
    参数:
    value - 一周给定的第一天。

    getFirstDayOfWeek

    public int getFirstDayOfWeek()
    获得一周的第一天;例如在美国为 Sunday,在法国为 Monday。
    返回值:
    一周的第一天。

    setMinimalDaysInFirstWeek

    public void setMinimalDaysInFirstWeek(int value)
    设置该年中第一个星期所需要的最少的天数,例如,如果定义第一个星期包含一年第一个月的第一天,用值 1 调用该方法。如果它必须是一个完整的星期,使用 7 调用该方法。
    参数:
    value - 给定的一年中第一个星期要求的最少天数。

    getMinimalDaysInFirstWeek

    public int getMinimalDaysInFirstWeek()
    获得该年中第一个星期所需要的最少的天数,例如,如果第一个星期定义为包含一年第一个月的第一天,getMinimalDaysInFirstWeek 返回 1。如果要求的最少天数必须是一个完整的星期,getMinimalDaysInFirstWeek 返回 7。
    返回值:
    一年中第一个星期要求的最少天数。

    getMinimum

    public abstract int getMinimum(int field)
    获得给定时间域最小值。 例如对于格里高里 DAY_OF_MONTH 为 1。
    参数:
    field - 给定的时间域。
    返回值:
    给定时间域最小值。

    getMaximum

    public abstract int getMaximum(int field)
    获得给定时间域最大值。 例如对于 Gregorian DAY_OF_MONTH 为 31。
    参数:
    field - 给定的时间域。
    返回值:
    给定时间域最大值。

    getGreatestMinimum

    public abstract int getGreatestMinimum(int field)
    获得给定域变化时的最高的最小值。 否则与 getMinimum() 相同。对格里高里日历没有区别。
    参数:
    field - 给定的时间域。
    返回值:
    给定时间域最高的最小值。

    getLeastMaximum

    public abstract int getLeastMaximum(int field)
    获得给定域变化时的最低的最大值。 否则与 getMaximum() 相同。例如对于格里高里日历 DAY_OF_MONTH 为 28。
    参数:
    field - 给定的时间域。
    返回值:
    定时间域最低的最大值。

    clone

    public Object clone()
    覆盖 Cloneable
    覆盖:
    类 Object 中的 clone

    toString

    public String toString()
    返回日历的字符串表示。
    返回值:
    日历的字符串表示。
    覆盖:
    类 Object 中的 toString
  • 相关阅读:
    Gray Code
    Search a 2D Matrix
    Find Minimum in Rotated Sorted Array
    Feign理解
    Ribbon描述
    eureka自定义instance Id
    eureka开启用户认证
    idea创建Eureka consumer入门实例
    eureka描述
    activeMq的安全机制
  • 原文地址:https://www.cnblogs.com/GenghisKhan/p/2406037.html
Copyright © 2020-2023  润新知