JavaTM 2 Platform
Standard Ed. 5.0

java.util
类 SimpleTimeZone

java.lang.Object
  继承者 java.util.TimeZone
      继承者 java.util.SimpleTimeZone
所有已实现的接口:
Serializable, Cloneable

public class SimpleTimeZone
extends TimeZone

SimpleTimeZoneTimeZone 的具体子类,表示一个使用格里高利历的时区。此类保持一个相对 GMT 的偏移量,称为原始偏移量,并保持夏令时安排的开始和结束规则。由于它仅为每一项保持单个值,因此它无法处理相对 GMT 的偏移量以及夏令时安排中的历史更改,除了 setStartYear 方法可以指定开始实施夏令时安排的年份之外。

要构造一个带有夏令时安排的 SimpleTimeZone,可以使用一组规则,即开始规则结束规则 来描述该安排。夏令时开始或结束的那一天通过 monthday-of-monthday-of-week 值联合指定。month 值由 Calendar 的 MONTH 字段值表示,如 Calendar.MARCHday-of-week 值由 Calendar 的 DAY_OF_WEEK 值表示,如 SUNDAY。这些值的组合含意如下。

夏令时开始或结束的那一天的具体时间由该日期内的毫秒值指定。有三种指定时间的模式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
另请参见:
Calendar, GregorianCalendar, TimeZone, 序列化表格

字段摘要
static int STANDARD_TIME
          指定为标准时间的开始或结束时间模式的常量。
static int UTC_TIME
          指定为 UTC 的开始或结束时间模式的常量。
static int WALL_TIME
          指定为挂钟时间的开始或结束时间模式的常量。
 
从类 java.util.TimeZone 继承的字段
LONG, SHORT
 
构造方法摘要
SimpleTimeZone(int rawOffset, String ID)
          使用给定的相对于 GMT 的基准时区偏移量和不带夏令时安排的时区 ID 构造一个 SimpleTimeZone。
SimpleTimeZone(int rawOffset, String ID, int startMonth, int startDay, int startDayOfWeek, int startTime, int endMonth, int endDay, int endDayOfWeek, int endTime)
          根据给定的相对于 GMT 的基准时区偏移量、时区 ID 和夏令时开始和结束的规则来构造一个 SimpleTimeZone。
SimpleTimeZone(int rawOffset, String ID, int startMonth, int startDay, int startDayOfWeek, int startTime, int endMonth, int endDay, int endDayOfWeek, int endTime, int dstSavings)
          根据给定的相对于 GMT 的基准时区偏移量、时区 ID 和夏令时开始和结束的规则来构造一个 SimpleTimeZone。
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)
          根据给定的相对于 GMT 的基准时区偏移量、时区 ID 和夏令时开始和结束的规则来构造一个 SimpleTimeZone。
 
方法摘要
 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)
          如果给定日期在夏令时期间,则执行查询。
 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()
          如果此时区使用夏令时,则执行查询。
 
从类 java.util.TimeZone 继承的方法
getAvailableIDs, getAvailableIDs, getDefault, getDisplayName, getDisplayName, getDisplayName, getDisplayName, getID, getTimeZone, setDefault, setID
 
从类 java.lang.Object 继承的方法
finalize, getClass, notify, notifyAll, wait, wait, wait
 

字段详细信息

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)
使用给定的相对于 GMT 的基准时区偏移量和不带夏令时安排的时区 ID 构造一个 SimpleTimeZone。

参数:
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)
根据给定的相对于 GMT 的基准时区偏移量、时区 ID 和夏令时开始和结束的规则来构造一个 SimpleTimeZone。假定 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。例如,0 代表 1 月)。
startDay - 夏令时开始的日期。有关此参数的特殊情形,请参阅类的描述。
startDayOfWeek - 夏令时开始时是一周的星期几。有关此参数的特殊情形,请参阅类的描述。
startTime - 以本地挂钟时间表示的夏令时开始时间(此天中的毫秒数),在此情况下为本地标准时间。
endMonth - 夏令时结束的月份。月份是一个 MONTH 字段值(基于 0。例如,9 代表 10 月)。
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)
根据给定的相对于 GMT 的基准时区偏移量、时区 ID 和夏令时开始和结束的规则来构造一个 SimpleTimeZone。指定 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。例如,0 代表 1 月)。
startDay - 夏令时开始的日期。有关此参数的特殊情形,请参阅类的描述。
startDayOfWeek - 夏令时开始时是一周的星期几。有关此参数的特殊情形,请参阅类的描述。
startTime - 以本地挂钟时间表示的夏令时开始时间,在此情况下为本地标准时间。
endMonth - 夏令时结束的月份。月份是一个 MONTH 字段值(基于 0。例如,9 代表 10 月)。
endDay - 夏令时结束的日期。有关此参数的特殊情形,请参阅类的描述。
endDayOfWeek - 夏令时结束时是一周的星期几。有关此参数的特殊情形,请参阅类的描述。
startTime - 以本地挂钟时间表示的夏令时结束时间,在此情况下为本地标准时间。
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)
根据给定的相对于 GMT 的基准时区偏移量、时区 ID 和夏令时开始和结束的规则来构造一个 SimpleTimeZone。此构造方法采用一组完整的开始和结束规则参数,其中包括 startTimeendTime 模式。此模式指定挂钟时间标准时间UTC 时间

参数:
rawOffset - GMT 的给定基准时区偏移量。
ID - 此对象给定的时区 ID。
startMonth - 夏令时开始的月份。月份是一个 MONTH 字段值(基于 0。例如,0 代表 1 月)。
startDay - 夏令时开始的日期。有关此参数的特殊情形,请参阅类的描述。
startDayOfWeek - 夏令时开始时是一周的星期几。有关此参数的特殊情形,请参阅类的描述。
startTime - 由 startTimeMode 指定的时间模式的夏令时开始时间。
startTimeMode - 由 startTime 指定的开始时间模式。
endMonth - 夏令时结束的月份。月份是一个 MONTH 字段值(基于 0。例如,9 代表 10 月)。
endDay - 夏令时结束的日期。有关此参数的特殊情形,请参阅类的描述。
endDayOfWeek - 夏令时结束时是一周的星期几。有关此参数的特殊情形,请参阅类的描述。
endTime - 由 endTimeMode 指定的时间模式的夏令时结束时间。
endTimeMode - 由 endTime 指定的结束时间的模式。
dstSavings - 在夏令时期间节省的时间量(以毫秒为单位)。
抛出:
IllegalArgumentException - 如果月份、日期、星期或时间参数超出开始或结束规则的范围,或者如果某个时间模式值无效。
从以下版本开始:
1.4
另请参见:
WALL_TIME, STANDARD_TIME, UTC_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。例如,0 代表 1 月)。
startDay - 夏令时开始的日期。有关此参数的特殊情形,请参阅类的描述。
startDayOfWeek - 夏令时开始时是一周的星期几。有关此参数的特殊情形,请参阅类的描述。
startTime - 以本地挂钟时间表示的夏令时开始时间,在此情况下为本地标准时间。
抛出:
IllegalArgumentException - 如果 startMonthstartDaystartDayOfWeekstartTime 参数超出范围。

setStartRule

public void setStartRule(int startMonth,
                         int startDay,
                         int startTime)
将夏令时开始规则设置为某个月份的固定日期。此方法等效于:
setStartRule(startMonth, startDay, 0, startTime)

参数:
startMonth - 夏令时开始的月份。月份是一个 MONTH 字段值(基于 0。例如,0 代表 1 月)。
startDay - 夏令时开始的日期。
startTime - 以本地挂钟时间表示的夏令时开始时间,在此情况下为本地标准时间。有关此参数的特殊情形,请参阅类的描述。
抛出:
IllegalArgumentException - 如果 startMonthstartDayOfMonthstartTime 参数超出范围。
从以下版本开始:
1.2

setStartRule

public void setStartRule(int startMonth,
                         int startDay,
                         int startDayOfWeek,
                         int startTime,
                         boolean after)
将夏令时开始规则设置为某个月份给定日期之前或之后的星期几,例如,8 号或之后的第一个星期一。

参数:
startMonth - 夏令时开始的月份。月份是一个 MONTH 字段值(基于 0。例如,0 代表 1 月)。
startDay - 夏令时开始的日期。
startDayOfWeek - 夏令时开始时是一周的星期几。
startTime - 以本地挂钟时间表示的夏令时开始时间,在此情况下为本地标准时间。
after - 如果为 true,则此规则将选择 dayOfMonth 或它之后 的第一个 dayOfWeek。如果为 false,则此规则将选择 dayOfMonth 或它之前 的最后一个 dayOfWeek
抛出:
IllegalArgumentException - 如果 startMonthstartDaystartDayOfWeekstartTime 参数超出范围。
从以下版本开始:
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);

参数:
endMonth - 夏令时结束的月份。月份是一个 MONTH 字段值(基于 0。例如,9 代表 10 月)。
endDay - 夏令时结束的日期。有关此参数的特殊情形,请参阅类的描述。
endDayOfWeek - 夏令时结束时是一周的星期几。有关此参数的特殊情形,请参阅类的描述。
endTime - 以本地挂钟时间表示的夏令时结束时间(此天中的毫秒数),在此情况下为本地标准时间。
抛出:
IllegalArgumentException - 如果 endMonthendDayendDayOfWeekendTime 参数超出范围。

setEndRule

public void setEndRule(int endMonth,
                       int endDay,
                       int endTime)
将夏令时结束规则设置为某个月份的固定日期。此方法等效于:
setEndRule(endMonth, endDay, 0, endTime)

参数:
endMonth - 夏令时结束的月份。月份是一个 MONTH 字段值(基于 0。例如,9 代表 10 月)。
endDay - 夏令时结束的日期。
endTime - 以本地挂钟时间表示的夏令时结束时间(此天中的毫秒数),在此情况下为本地标准时间。
抛出:
IllegalArgumentException - 如果 endMonthendDayendTime 参数超出范围。
从以下版本开始:
1.2

setEndRule

public void setEndRule(int endMonth,
                       int endDay,
                       int endDayOfWeek,
                       int endTime,
                       boolean after)
将夏令时结束规则设置为某个月份给定日期之前或之后的星期几,例如,8 号或之后的第一个星期一。

参数:
endMonth - 夏令时结束的月份。月份是一个 MONTH 字段值(基于 0。例如,9 代表 10 月)。
endDay - 夏令时结束的日期。
endDayOfWeek - 夏令时结束时是一周的星期几。
endTime - 以本地挂钟时间表示的夏令时结束时间(此天中的毫秒数),在此情况下为本地标准时间。
after - 如果为 true,则此规则将选择 endDay 或它之后 的第一个 endDayOfWeek。如果为 false,则此规则将选择该月份的 endDay 或它之前的最后一个 endDayOfWeek
抛出:
IllegalArgumentException - 如果 endMonthendDayendDayOfWeekendTime 参数超出范围。
从以下版本开始:
1.2

getOffset

public int getOffset(long date)
从给定时间的 UTC 返回此时区的偏移量。如果夏令时在给定的时间是有效的,就使用夏令时节省值调整偏移值。

覆盖:
TimeZone 中的 getOffset
参数:
date - 出现时区偏移量的时间。
返回:
添加到 UTC 以获取本地时间的时间量(以毫秒为单位)。
从以下版本开始:
1.4
另请参见:
Calendar.ZONE_OFFSET, Calendar.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) 而不调用此方法。

指定者:
TimeZone 中的 getOffset
参数:
era - 给定日期的年代。
year - 给定日期的年份。
month - 给定日期的月份。月份是以 0 为基础的,比如 0 代表 1 月。
day - 给定日期的月份中的某一天。
dayOfWeek - 给定日期的一周中的某一天。
millis - 标准 本地时间中天的毫秒数。
返回:
要添加到 UTC 以获取本地时间的毫秒数。
抛出:
IllegalArgumentException - 如果 eramonthdaydayOfWeekmillis 参数超出范围。
另请参见:
Calendar.ZONE_OFFSET, Calendar.DST_OFFSET

getRawOffset

public int getRawOffset()
获取此时区的 GMT 偏移量。

指定者:
TimeZone 中的 getRawOffset
返回:
以毫秒为单位的 GMT 偏移量值。
另请参见:
setRawOffset(int)

setRawOffset

public void setRawOffset(int offsetMillis)
把基准时区偏移量设置到 GMT。这是添加到 UTC 以获取本地时间的偏移量。

指定者:
TimeZone 中的 setRawOffset
参数:
offsetMillis - GMT 的给定基准时区偏移量。
另请参见:
getRawOffset()

setDSTSavings

public void setDSTSavings(int millisSavedDuringDST)
设置在夏令时期间时钟提前的时间量(以毫秒为单位)。

参数:
millisSavedDuringDST - 在夏令时规则生效时,相对于标准时间提前的毫秒数。一个正数,一般为 1 小时 (3600000)。
从以下版本开始:
1.2
另请参见:
getDSTSavings()

getDSTSavings

public int getDSTSavings()
返回设置在夏令时期间时钟提前的时间量(以毫秒为单位)。

覆盖:
TimeZone 中的 getDSTSavings
返回:
在夏令时规则生效时,相对于标准时间提前的毫秒数,如果此时区不实施夏令时,则为 0(零)。
从以下版本开始:
1.2
另请参见:
setDSTSavings(int)

useDaylightTime

public boolean useDaylightTime()
如果此时区使用夏令时,则执行查询。

指定者:
TimeZone 中的 useDaylightTime
返回:
如果此时区使用夏令时,则返回 true;否则返回 false。

inDaylightTime

public boolean inDaylightTime(Date date)
如果给定日期在夏令时期间,则执行查询。

指定者:
TimeZone 中的 inDaylightTime
参数:
date - 给定的日期。
返回:
如果给定的日期在夏令时中,则返回 true,否则返回 false。

clone

public Object clone()
返回此 SimpleTimeZone 实例的一个副本。

覆盖:
TimeZone 中的 clone
返回:
此实例的一个副本。
另请参见:
Cloneable

hashCode

public int hashCode()
生成 SimpleDateFormat 对象的哈希码。

覆盖:
Object 中的 hashCode
返回:
此对象的哈希码。
另请参见:
Object.equals(java.lang.Object), Hashtable

equals

public boolean equals(Object obj)
比较两个 SimpleTimeZone 对象的相等性。

覆盖:
Object 中的 equals
参数:
obj - 要与之比较的 SimpleTimeZone 对象。
返回:
如果给定的 obj 与此 SimpleTimeZone 对象相同,则返回 true;否则返回 false。
另请参见:
Object.hashCode(), Hashtable

hasSameRules

public boolean hasSameRules(TimeZone other)
如果此时区与另一时区具有相同的规则和偏移量,则返回 true

覆盖:
TimeZone 中的 hasSameRules
参数:
other - 要与之比较的 TimeZone 对象。
返回:
如果给定时区为 SimpleTimeZone,而且与此时区具有相同的规则和偏移量,则返回 true
从以下版本开始:
1.2

toString

public String toString()
返回此时区的字符串表示形式。

覆盖:
Object 中的 toString
返回:
此时区的字符串表示形式。

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策