模块  java.base
软件包  java.util

Class SimpleTimeZone

  • 实现的所有接口
    SerializableCloneable

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

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

    • 一个月的确切日期
      要指定一个月的确切日期,请将月份日期设置为精确值, 将星期几设置为零。 例如,要指定3月1日, 设定为MARCH一天的日到1,而设置为0 天的一周
    • 星期几或星期几之后的星期几
      要指定一周的某一天或一个月的具体一天后,将month设置为一个具体的月份值, 日的日到应用规则或之后,每天和每周某一天的到负DAY_OF_WEEK字段值。 例如,要指定4月的第二个星期日,请将月份设置为APRIL ,将日期设置为8, 将星期几设置- SUNDAY
    • 星期几或星期几之前的星期几
      要指定或每月的精确天前一周的某一天,设置和日常的周 月某一天的负值。 例如,要指定3月21日或之前的最后一个星期三,请将月份设置为MARCH ,将日期设置为-21, 将星期几设置- WEDNESDAY
    • 一个月的最后一天
      要指定,最后一天的周月,集日的一周DAY_OF_WEEK值和一天的日 -1。 例如,设定每月设置10月的最后一个星期日,到OCTOBER日的一周SUNDAY日的日 -1。
    夏令时开始或结束的时间由当天的毫秒值指定。 有三种模式 S的指定时间: WALL_TIMESTANDARD_TIMEUTC_TIME 例如,如果夏令时在挂钟时间的凌晨2:00结束,则可以在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
    • 字段汇总

      字段  
      变量和类型 字段 描述
      static int STANDARD_TIME
      指定为标准时间的开始或结束时间模式的常量。
      static int UTC_TIME
      指定为UTC的开始或结束时间模式的常量。
      static int WALL_TIME
      指定为挂钟时间的开始或结束时间模式的常量。
    • 构造方法摘要

      构造方法  
      构造器 描述
      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以及开始和结束日光时间的规则。
    • 方法摘要

      所有方法  实例方法 具体的方法 
      变量和类型 方法 描述
      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
        另请参见:
        常数字段值
      • STANDARD_TIME

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

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

      • 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毫秒(即一小时)。 这个构造函数相当于:
           SimpleTimeZone(rawOffset, ID, startMonth, startDay, startDayOfWeek, startTime, SimpleTimeZone.WALL_TIME, endMonth, endDay, endDayOfWeek, endTime, SimpleTimeZone.WALL_TIME, 3600000)  
        参数
        rawOffset - 给定的基准时区偏离GMT。
        ID - 为此对象指定的时区ID。
        startMonth - 开始月份的夏令时。 Month是MONTH字段值(基于0,例如,1表示0)。
        startDay - 夏令时开始的月中的某一天。 有关此参数的特殊情况,请参阅类说明。
        startDayOfWeek - 从星期几开始的夏令时。 有关此参数的特殊情况,请参阅类说明。
        startTime - 以本地挂钟时间(以毫秒为单位)的夏令时开始时间,在本例中为本地标准时间。
        endMonth - 夏令时结束月份。 月份是MONTH字段值(基于0,例如10月份为9)。
        endDay - 夏令时结束的月份中的某一天。 有关此参数的特殊情况,请参阅类说明。
        endDayOfWeek - 夏令时结束日期。 有关此参数的特殊情况,请参阅类说明。
        endTime - 本地挂钟时间中的夏令时结束时间(在一天内以毫秒为单位),在本例中为本地日照时间。
        异常
        IllegalArgumentException - 如果月,日,日,周或时间参数超出开始或结束规则的范围
      • 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 - 如果月,日,日,周或时间参数超出开始或结束规则的范围
        从以下版本开始:
        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,例如,0表示1月)。
        startDay - 夏令时开始的月中的某一天。
        startTime - 本地挂钟时间的夏令时开始时间,在这种情况下是本地标准时间。 有关此参数的特殊情况,请参阅类说明。
        异常
        IllegalArgumentException -如果 startMonthstartDayOfMonth ,或 startTime参数超出范围
        从以下版本开始:
        1.2
      • setStartRule

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

        public void setEndRule​(int endMonth,                       int endDay,                       int endDayOfWeek,                       int endTime)
        设置夏令时结束规则。 例如,如果夏令时在10月的最后一个星期日凌晨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月份为9)。
        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的偏移量。 如果夏令时在给定时间有效,则使用夏令时量调整偏移值。
        重写:
        getOffset在课程 TimeZone
        参数
        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的日历GregorianCalendar

        注意:通常,客户端应使用Calendar.get(ZONE_OFFSET) + Calendar.get(DST_OFFSET)而不是调用此方法。

        Specified by:
        getOffsetTimeZone
        参数
        era - 给定日期的时代。
        year - 指定日期的年份。
        month - 给定日期的月份。 月份为0。 例如,0表示1月份。
        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:
        setRawOffset在课堂 TimeZone
        参数
        offsetMillis - 给定的基准时区偏移到GMT。
        另请参见:
        getRawOffset()
      • setDSTSavings

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

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

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

        public Object clone()
        返回此 SimpleTimeZone实例的副本。
        重写:
        clone课程类别 TimeZone
        结果
        这个实例的克隆。
        另请参见:
        Cloneable
      • equals

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

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

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