Module  java.base
软件包  java.util

Class SimpleTimeZone

  • All Implemented Interfaces:
    SerializableCloneable


    public class SimpleTimeZone
    extends TimeZone
    SimpleTimeZone是一个具体子类TimeZone ,表示一个使用格里高利历的时区。 该类保留与GMT的偏移量,称为原始偏移量 ,以及夏令时计划的开始和结束规则。 由于它仅保留每个值的单个值,因此无法处理与GMT和夏令时偏移量的历史更改,但setStartYear方法可指定夏令时开始生效的年份。

    要构建具有夏令时计划的SimpleTimeZone ,可以使用一组规则, 开始规则最终规则来描述时间表。 夏令时开始或结束的一天月份日期星期几值的组合指定。 月份值由日历MONTH字段值表示,例如Calendar.MARCH 星期几值由日历DAY_OF_WEEK值表示,例如SUNDAY 价值组合的含义如下。

    • 确切的月份
      要指定一个确切的月份,请将月份日期设置为确切的值, 将星期几设置为零。 例如,要指定3月1日,将月份设置为MARCH月中的日期为1, 将星期几设置为0。
    • 一个月的一天或之后的一个星期
      要指定一周的某一天或一个月的具体一天后,将month设置为一个具体的月份值, 日的日到应用规则或之后,每天和每周某一天的到负DAY_OF_WEEK字段值。 例如,要指定四月份的第二个星期日,请将月份设为APRIL月的日期为8, 星期几- SUNDAY
    • 一个月的一天或之前的一个星期
      要指定一个星期的星期几在当天的确切日期之前,请将日期星期几设置为负值。 例如,要指定3月21日当天或之前的最后一个星期三,设定月份MARCH当天为-21, 星期几- WEDNESDAY
    • 一个月的最后一个星期
      要指定,本月的最后一个星期几,将星期几设为DAY_OF_WEEK值和月的日期为-1。 例如,要指定10月的最后一个星期日,请将月份设为OCTOBER周数SUNDAY日期为-1。
    夏令时开始或结束的一天中的时间由白天内的毫秒值指定。 有三种模式 S的指定时间: WALL_TIMESTANDARD_TIMEUTC_TIME 例如,如果夏令时在挂钟时间的凌晨2点结束,则可以在WALL_TIME模式下指定7200000毫秒。 在这种情况下, 结束规则的挂钟时间意味着与日光时间相同的事情。

    以下是用于构建时区对象的参数示例。

       // Base GMT offset: -8:00 // DST starts: at 2:00am in standard time // on the first Sunday in April // DST ends: at 2:00am in daylight time // on the last Sunday in October // Save: 1 hour SimpleTimeZone(-28800000, "America/Los_Angeles", Calendar.APRIL, 1, -Calendar.SUNDAY, 7200000, Calendar.OCTOBER, -1, Calendar.SUNDAY, 7200000, 3600000) // Base GMT offset: +1:00 // DST starts: at 1:00am in UTC time // on the last Sunday in March // DST ends: at 1:00am in UTC time // on the last Sunday in October // Save: 1 hour SimpleTimeZone(3600000, "Europe/Paris", Calendar.MARCH, -1, Calendar.SUNDAY, 3600000, SimpleTimeZone.UTC_TIME, Calendar.OCTOBER, -1, Calendar.SUNDAY, 3600000, SimpleTimeZone.UTC_TIME, 3600000)  
    这些参数规则也适用于设置规则方法,如setStartRule
    从以下版本开始:
    1.1
    另请参见:
    CalendarGregorianCalendarTimeZoneSerialized Form
    • Field Summary

      Fields  
      Modifier and Type Field 描述
      static int STANDARD_TIME
      作为标准时间指定的开始或结束时间模式的常数。
      static int UTC_TIME
      指定为UTC的开始或结束时间模式的常数。
      static int WALL_TIME
      指定为挂钟时间的开始或结束时间模式的常数。
    • 构造方法摘要

      构造方法  
      Constructor 描述
      SimpleTimeZone​(int rawOffset, String ID)
      构造一个SimpleTimeZone,其给定的基准时区偏离GMT和时区ID,而没有夏令时。
      SimpleTimeZone​(int rawOffset, String ID, int startMonth, int startDay, int startDayOfWeek, int startTime, int endMonth, int endDay, int endDayOfWeek, int endTime)
      构造一个SimpleTimeZone,其给定的基准时区偏离GMT,时区ID以及开始和结束夏令时的规则。
      SimpleTimeZone​(int rawOffset, String ID, int startMonth, int startDay, int startDayOfWeek, int startTime, int endMonth, int endDay, int endDayOfWeek, int endTime, int dstSavings)
      构造一个SimpleTimeZone,其给定的基准时区偏离GMT,时区ID以及开始和结束夏令时的规则。
      SimpleTimeZone​(int rawOffset, String ID, int startMonth, int startDay, int startDayOfWeek, int startTime, int startTimeMode, int endMonth, int endDay, int endDayOfWeek, int endTime, int endTimeMode, int dstSavings)
      构造一个SimpleTimeZone,其给定的基准时区偏离GMT,时区ID以及开始和结束夏令时的规则。
    • 方法摘要

      所有方法  接口方法  具体的方法 
      Modifier and Type 方法 描述
      Object clone​()
      返回此 SimpleTimeZone实例的克隆。
      boolean equals​(Object obj)
      比较两个 SimpleTimeZone对象的相等性。
      int getDSTSavings​()
      返回时钟在夏令时期间提前的时间(以毫秒为单位)。
      int getOffset​(int era, int year, int month, int day, int dayOfWeek, int millis)
      在指定的日期和时间内,返回本地时间和UTC之间的毫秒数差异,同时考虑原始偏移量和夏令时的效果。
      int getOffset​(long date)
      在给定时间返回此时区与UTC的偏移量。
      int getRawOffset​()
      获取此时区的GMT偏移量。
      int hashCode​()
      生成SimpleDateFormat对象的哈希码。
      boolean hasSameRules​(TimeZone other)
      如果此区域与其他区域具有相同的规则和偏移量,则返回 true
      boolean inDaylightTime​(Date date)
      查询给定日期是否在夏令时。
      boolean observesDaylightTime​()
      如果这个 SimpleTimeZone观察到夏令时,则返回 true
      void setDSTSavings​(int millisSavedDuringDST)
      设置时钟在夏令时期间提前的时间(以毫秒为单位)。
      void setEndRule​(int endMonth, int endDay, int endTime)
      将夏令时结束规则设置为一个月内的固定日期。
      void setEndRule​(int endMonth, int endDay, int endDayOfWeek, int endTime)
      设置夏令时结束规则。
      void setEndRule​(int endMonth, int endDay, int endDayOfWeek, int endTime, boolean after)
      将夏令时结束规则设置为在一个月内的给定日期之前或之后的工作日,例如第8个或之后的第一个星期一。
      void setRawOffset​(int offsetMillis)
      将基准时区偏移设置为GMT。
      void setStartRule​(int startMonth, int startDay, int startTime)
      将夏令时开始规则设置为一个月内的固定日期。
      void setStartRule​(int startMonth, int startDay, int startDayOfWeek, int startTime)
      设置夏令时启动规则。
      void setStartRule​(int startMonth, int startDay, int startDayOfWeek, int startTime, boolean after)
      将夏令时开始规则设置为一个月内给定日期之前或之后的工作日,例如第8个或之后的第一个星期一。
      void setStartYear​(int year)
      设置夏令时起始年份。
      String toString​()
      返回此时区的字符串表示形式。
      boolean useDaylightTime​()
      查询此时区是否使用夏令时。
    • 字段详细信息

      • WALL_TIME

        public static final int WALL_TIME
        指定为挂钟时间的开始或结束时间模式的常数。 挂钟时间是起始规则的标准时间,最终规则的日光时间。
        从以下版本开始:
        1.4
        另请参见:
        Constant Field Values
      • STANDARD_TIME

        public static final int STANDARD_TIME
        作为标准时间指定的开始或结束时间模式的常数。
        从以下版本开始:
        1.4
        另请参见:
        Constant Field Values
      • UTC_TIME

        public static final int UTC_TIME
        指定为UTC的开始或结束时间模式的常数。 例如,欧盟规则被指定为UTC时间。
        从以下版本开始:
        1.4
        另请参见:
        Constant Field Values
    • 构造方法详细信息

      • SimpleTimeZone

        public SimpleTimeZone​(int rawOffset,
                              String ID)
        构造一个SimpleTimeZone,其给定的基准时区偏离GMT和时区ID,而没有夏令时。
        参数
        rawOffset - GMT的基准时区偏移量(以毫秒为单位)。
        ID - 给予该实例的时区名称。
      • SimpleTimeZone

        public SimpleTimeZone​(int rawOffset,
                              String ID,
                              int startMonth,
                              int startDay,
                              int startDayOfWeek,
                              int startTime,
                              int endMonth,
                              int endDay,
                              int endDayOfWeek,
                              int endTime)
        构造一个SimpleTimeZone,其给定的基准时区偏离GMT,时区ID以及开始和结束夏令时的规则。 startTimeendTime都被指定为在挂钟时间中表示。 夏令时假设为3600000毫秒(即1小时)。 这个构造函数相当于:
           SimpleTimeZone(rawOffset, ID, startMonth, startDay, startDayOfWeek, startTime, SimpleTimeZone.WALL_TIME, endMonth, endDay, endDayOfWeek, endTime, SimpleTimeZone.WALL_TIME, 3600000)  
        参数
        rawOffset - 给定的基准时区偏离GMT。
        ID - 给予该对象的时区ID。
        startMonth - 夏令时开始月份。 月份是一个MONTH字段值(基于0),例如1月份为0。
        startDay - 夏令时开始的月份中的日期。 请参阅此参数的特殊情况的类描述。
        startDayOfWeek - 从白天开始的夏令时。 请参阅此参数的特殊情况的类描述。
        startTime - 本地挂钟时间的夏令时开始时间(以毫秒为单位),这是本例中的本地标准时间。
        endMonth - 夏令时结束月份。 月份是一个MONTH字段值(基于0),例如10月的9。
        endDay - 夏令时结束的月份中的日期。 请参阅此参数的特殊情况的类描述。
        endDayOfWeek - 星期几结束的夏令时。 请参阅此参数的特殊情况的类描述。
        endTime - 本地挂钟时间的夏令时结束时间,(本日为毫秒),这是当地的夏令时间。
        异常
        IllegalArgumentException - 如果月,日,dayOfWeek或时间参数超出开始或结束规则的范围
      • SimpleTimeZone

        public SimpleTimeZone​(int rawOffset,
                              String ID,
                              int startMonth,
                              int startDay,
                              int startDayOfWeek,
                              int startTime,
                              int endMonth,
                              int endDay,
                              int endDayOfWeek,
                              int endTime,
                              int dstSavings)
        构造一个SimpleTimeZone,其给定的基准时区偏离GMT,时区ID以及开始和结束夏令时的规则。 假定startTimeendTime均以挂钟时间表示。 这个构造函数相当于:
           SimpleTimeZone(rawOffset, ID, startMonth, startDay, startDayOfWeek, startTime, SimpleTimeZone.WALL_TIME, endMonth, endDay, endDayOfWeek, endTime, SimpleTimeZone.WALL_TIME, dstSavings)  
        参数
        rawOffset - 给定的基准时区偏离GMT。
        ID - 给予该对象的时区ID。
        startMonth - 夏令时开始月份。 月份是一个MONTH字段值(基于0),例如1月份为0。
        startDay - 夏令时开始的月份中的日期。 请参阅此参数的特殊情况的类描述。
        startDayOfWeek - 从白天开始的夏令时。 请参阅此参数的特殊情况的类描述。
        startTime - 本地挂钟时间的夏令时开始时间,这是本例中的本地标准时间。
        endMonth - 夏令时结束月份。 月是一个MONTH字段值(基于0),例如10月的9。
        endDay - 夏令时结束的月份中的日期。 请参阅此参数的特殊情况的类描述。
        endDayOfWeek - 星期几结束的夏令时。 请参阅此参数的特殊情况的类描述。
        endTime - 本地挂钟时间的夏令时结束时间,这是本例中的本地日光时间。
        dstSavings - 夏令时期间保存的时间(毫秒)。
        异常
        IllegalArgumentException - 如果月,日,dayOfWeek或时间参数超出开始或结束规则的范围
        从以下版本开始:
        1.2
      • SimpleTimeZone

        public SimpleTimeZone​(int rawOffset,
                              String ID,
                              int startMonth,
                              int startDay,
                              int startDayOfWeek,
                              int startTime,
                              int startTimeMode,
                              int endMonth,
                              int endDay,
                              int endDayOfWeek,
                              int endTime,
                              int endTimeMode,
                              int dstSavings)
        构造一个SimpleTimeZone,其给定的基准时区偏离GMT,时区ID以及开始和结束夏令时的规则。 该构造函数采用完整的开始和结束规则参数,包括startTimeendTime模式。 该模式指定wall timestandard timeUTC time
        参数
        rawOffset - 给定的基准时区与GMT的偏移。
        ID - 给予该对象的时区ID。
        startMonth - 夏令时开始月份。 月份是一个MONTH字段值(基于0),例如1月份为0。
        startDay - 夏令时开始的月份中的日期。 请参阅此参数的特殊情况的类描述。
        startDayOfWeek - 从白天开始的夏令时。 请参阅此参数的特殊情况的类描述。
        startTime - startTimeMode指定的时间模式下的夏令时开始时间。
        startTimeMode - 由startTime指定的开始时间模式。
        endMonth - 夏令时结束月份。 月份是一个MONTH字段值(基于0),例如10月的9。
        endDay - 夏令时结束的月份中的日期。 请参阅此参数的特殊情况的类描述。
        endDayOfWeek - 星期几结束的夏令时。 请参阅此参数的特殊情况的类描述。
        endTime - 由 endTimeMode指定的夏时制时间模式。
        endTimeMode - 由endTime指定的结束时间模式
        dstSavings - 在夏令时期间保存的时间(毫秒)。
        异常
        IllegalArgumentException - 如果月,日,dayOfWeek,时间更多或时间参数超出开始或结束规则的范围,或者时间模式值无效。
        从以下版本开始:
        1.4
        另请参见:
        WALL_TIMESTANDARD_TIMEUTC_TIME
    • 方法详细信息

      • setStartYear

        public void setStartYear​(int year)
        设置夏令时起始年份。
        参数
        year - 夏令时开始的一年。
      • setStartRule

        public void setStartRule​(int startMonth,
                                 int startDay,
                                 int startDayOfWeek,
                                 int startTime)
        设置夏令时启动规则。 例如,如果夏令时在4月的第一个星期日凌晨2点在本地挂钟时间开始,您可以通过调用以下方式设置启动规则:
          setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2*60*60*1000); 
        参数
        startMonth - 夏令时开始月份。 月份是一个MONTH字段值(基于0),例如1月份为0。
        startDay - 夏令时开始的月份中的日期。 请参阅此参数的特殊情况的类描述。
        startDayOfWeek - 从白天开始的夏令时。 请参阅此参数的特殊情况的类描述。
        startTime - 本地挂钟时间的夏令时开始时间,这是本例中的本地标准时间。
        异常
        IllegalArgumentException -如果 startMonthstartDaystartDayOfWeek ,或 startTime参数超出范围
      • setStartRule

        public void setStartRule​(int startMonth,
                                 int startDay,
                                 int startTime)
        将夏令时开始规则设置为一个月内的固定日期。 此方法相当于:
          setStartRule(startMonth, startDay, 0, startTime) 
        参数
        startMonth - 夏令时开始月份。 月份是一个MONTH字段值(基于0),例如1月份为0。
        startDay - 夏令时开始的月份中的日期。
        startTime - 本地挂钟时间的夏令时开始时间,在这种情况下是本地标准时间。 请参阅此参数的特殊情况的类描述。
        异常
        IllegalArgumentException -如果 startMonthstartDayOfMonth ,或 startTime参数超出范围
        从以下版本开始:
        1.2
      • setStartRule

        public void setStartRule​(int startMonth,
                                 int startDay,
                                 int startDayOfWeek,
                                 int startTime,
                                 boolean after)
        将夏令时开始规则设置为一个月内给定日期之前或之后的工作日,例如第8个或之后的第一个星期一。
        参数
        startMonth - 夏令时开始月份。 月份是一个MONTH字段值(基于0),例如1月份为0。
        startDay - 夏令时开始的月份中的日期。
        startDayOfWeek - 从星期几开始的夏令时。
        startTime - 本地挂钟时间的夏令时开始时间,这是本例中的本地标准时间。
        after - 如果为真,则此规则将选择dayOfWeek 之后的第一个dayOfMonth 如果为false,则此规则选择dayOfWeek 之前之前的最后dayOfMonth
        异常
        IllegalArgumentException -如果 startMonthstartDaystartDayOfWeek ,或 startTime参数超出范围
        从以下版本开始:
        1.2
      • setEndRule

        public void setEndRule​(int endMonth,
                               int endDay,
                               int endDayOfWeek,
                               int endTime)
        设置夏令时结束规则。 例如,如果夏令时在十月的最后一个星期日凌晨2点在挂钟时间结束,您可以通过拨打以下setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2*60*60*1000);设置结束规则: setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2*60*60*1000);
        参数
        endMonth - 夏令时结束月份。 月份是一个MONTH字段值(基于0),例如10月的9。
        endDay - 夏令时结束的月份中的日期。 请参阅此参数的特殊情况的类描述。
        endDayOfWeek - 星期几结束的夏令时。 请参阅此参数的特殊情况的类描述。
        endTime - 在这种情况下,本地挂钟时间的夏令时结束时间(以毫秒为单位),这是当地的日光时间。
        异常
        IllegalArgumentException -如果 endMonthendDayendDayOfWeek ,或 endTime参数超出范围
      • setEndRule

        public void setEndRule​(int endMonth,
                               int endDay,
                               int endTime)
        将夏令时结束规则设置为一个月内的固定日期。 此方法相当于:
          setEndRule(endMonth, endDay, 0, endTime) 
        参数
        endMonth - 夏令时结束月份。 月是一个MONTH字段值(基于0),例如10月10日。
        endDay - 夏令时结束的月份中的日期。
        endTime - 本地挂钟时间的夏令时结束时间,(本日为毫秒),这是当地的夏令时。
        异常
        IllegalArgumentException -的 endMonthendDay ,或 endTime参数超出范围
        从以下版本开始:
        1.2
      • setEndRule

        public void setEndRule​(int endMonth,
                               int endDay,
                               int endDayOfWeek,
                               int endTime,
                               boolean after)
        将夏令时结束规则设置为在一个月内的给定日期之前或之后的工作日,例如第8个或之后的第一个星期一。
        参数
        endMonth - 夏令时结束月份。 月是一个MONTH字段值(基于0),例如10月的9。
        endDay - 夏令时结束的月份中的日期。
        endDayOfWeek - 星期几结束的夏令时。
        endTime - 本地挂钟时间的夏令时结束时间,(本日为毫秒),这是当地的夏令时间。
        after - 如果为true,则此规则选择endDayOfWeek 之后的第一个endDay 如果是假,这个规则选择最后endDayOfWeek或之前endDay的一个月。
        异常
        IllegalArgumentException -的 endMonthendDayendDayOfWeek ,或 endTime参数超出范围
        从以下版本开始:
        1.2
      • getOffset

        public int getOffset​(long date)
        在给定时间返回此时区与UTC的偏移量。 如果夏令时在给定的时间有效,则偏移量将随着夏令时的调整而调整。
        重写:
        getOffsetTimeZone
        参数
        date - 发现时区偏移的时间
        结果
        以毫秒为单位添加到UTC以获取本地时间的时间量。
        从以下版本开始:
        1.4
        另请参见:
        Calendar.ZONE_OFFSETCalendar.DST_OFFSET
      • getOffset

        public int getOffset​(int era,
                             int year,
                             int month,
                             int day,
                             int dayOfWeek,
                             int millis)
        在指定的日期和时间内,返回本地时间和UTC之间的毫秒数差异,同时考虑原始偏移量和夏令时的效果。 该方法假定开始和结束月份是不同的。 它还使用默认的GregorianCalendar对象作为其基础日历,例如用于确定闰年。 不要使用除默认值GregorianCalendar之外的日历的此方法的结果。

        注意:一般来说,客户端应该使用Calendar.get(ZONE_OFFSET) + Calendar.get(DST_OFFSET)而不是调用此方法。

        Specified by:
        getOffsetTimeZone
        参数
        era - 给定日期的时代。
        year - 给定日期的年份。
        month - 给定日期的月份。 月份为0。 例如,1月份为0。
        day - 给定日期的日期。
        dayOfWeek - 给定日期的星期几。
        millis - 标准当地时间的毫秒数。
        结果
        添加到UTC以获取本地时间的毫秒数。
        异常
        IllegalArgumentException -的 eramonthdaydayOfWeek ,或 millis参数超出范围
        另请参见:
        Calendar.ZONE_OFFSETCalendar.DST_OFFSET
      • getRawOffset

        public int getRawOffset​()
        获取此时区的GMT偏移量。
        Specified by:
        getRawOffsetTimeZone
        结果
        GMT偏移值以毫秒为单位
        另请参见:
        setRawOffset(int)
      • setRawOffset

        public void setRawOffset​(int offsetMillis)
        将基准时区偏移设置为GMT。 这是添加到UTC以获取当地时间的偏移量。
        Specified by:
        setRawOffsetTimeZone
        参数
        offsetMillis - 给定的基准时区偏移到GMT。
        另请参见:
        getRawOffset()
      • setDSTSavings

        public void setDSTSavings​(int millisSavedDuringDST)
        设置时钟在夏令时期间提前的时间(以毫秒为单位)。
        参数
        millisSavedDuringDST - 相对于夏令时规则生效的标准时间,时间提前的毫秒数。 正数,通常为1小时(3600000)。
        从以下版本开始:
        1.2
        另请参见:
        getDSTSavings()
      • getDSTSavings

        public int getDSTSavings​()
        返回时钟在夏令时期间提前的时间(以毫秒为单位)。
        重写:
        getDSTSavingsTimeZone
        结果
        相对于夏令时规则生效的标准时间,时间提前的毫秒数,如果该时区没有观察到夏令时,则为0(零)。
        从以下版本开始:
        1.2
        另请参见:
        setDSTSavings(int)
      • inDaylightTime

        public boolean inDaylightTime​(Date date)
        查询给定日期是否在夏令时。
        Specified by:
        inDaylightTimeTimeZone
        参数
        date - 给定日期。
        结果
        如果夏令时在给定日期生效,则为真; 否则为假。
      • clone

        public Object clone​()
        返回此 SimpleTimeZone实例的克隆。
        重写:
        cloneTimeZone
        结果
        这个实例的一个克隆。
        另请参见:
        Cloneable
      • equals

        public boolean equals​(Object obj)
        比较两个 SimpleTimeZone对象的相等性。
        重写:
        equalsObject
        参数
        obj - 要比较的 SimpleTimeZone对象。
        结果
        如果给定的obj与此SimpleTimeZone对象相同, SimpleTimeZone ; 否则为假。
        另请参见:
        Object.hashCode()HashMap
      • hasSameRules

        public boolean hasSameRules​(TimeZone other)
        如果此区域具有与其他区域相同的规则和偏移量,则返回 true
        重写:
        hasSameRulesTimeZone
        参数
        other - 要比较的TimeZone对象
        结果
        true如果给定的区域是一个SimpleTimeZone并具有与此相同的规则和偏移量
        从以下版本开始:
        1.2
      • toString

        public String toString​()
        返回此时区的字符串表示形式。
        重写:
        toStringObject
        结果
        此时区的字符串表示形式。