所有类


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。这些值的组合含意如下。

  • 一个月的具体某一天
    要指定一个月的具体某一天,可将 monthday-of-month 设置为一个具体的值,并将 day-of-week 设置为 0。例如,要指定 3 月 1 日,可将 month 设置为 MARCHday-of-month 设置为 1,并将 day-of-week 设置为 0。
  • 一个月的某一天或之后的星期几
    要具体指定一个月的某一天或之后的星期几,可将 month 设置为一个具体的月份值,将 day-of-month 设置为在该日期或在该日期之后应用规则的那一天,并将 day-of-week 设置为负的 DAY_OF_WEEK 字段值。例如,要指定 4 月的第二个星期天,可将 month 设置为 APRILday-of-month 设置为 8,并将 day-of-week 设置为 -SUNDAY
  • 一个月的某一天或之前的星期几
    要具体指定一个月的某一天或之前的星期几,可将 day-of-monthday-of-week 设置为负值。例如,要指定 3 月 21 日或之前的最后一个星期三,可将 month 设置为 MARCH,将 day-of-month 设置为 -21,并将 day-of-week 设置为 -WEDNESDAY
  • 一个月的最后一个星期几
    要指定一个月的最后一个星期几,可将 day-of-week 设置为 DAY_OF_WEEK 值,并将 day-of-month 设置为 -1。例如,要设置 10 月的最后一个星期日,可将 month 设置为 OCTOBER,将 day-of-week 设置为 SUNDAY,并将 day-of-month 设置为 -1。
夏令时开始或结束的那一天的具体时间由该日期内的毫秒值指定。有三种指定时间的模式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 intSTANDARD_TIME
          指定为标准时间的开始或结束时间模式的常量。
static intUTC_TIME
          指定为 UTC 的开始或结束时间模式的常量。
static intWALL_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。
 
方法摘要
 Objectclone()
          返回此 SimpleTimeZone 实例的一个副本。
 booleanequals(Object obj)
          比较两个 SimpleTimeZone 对象的相等性。
 intgetDSTSavings()
          返回设置在夏令时期间时钟提前的时间量(以毫秒为单位)。
 intgetOffset(int era, int year, int month, int day, int dayOfWeek, int millis)
          返回以毫秒为单位的本地时间与 UTC 之间的差别,对于指定日期和时间,把原始偏移量和夏令时的效果同时考虑在内。
 intgetOffset(long date)
          从给定时间的 UTC 返回此时区的偏移量。
 intgetRawOffset()
          获取此时区的 GMT 偏移量。
 inthashCode()
          生成 SimpleDateFormat 对象的哈希码。
 booleanhasSameRules(TimeZone other)
          如果此时区与另一时区具有相同的规则和偏移量,则返回 true
 booleaninDaylightTime(Date date)
          如果给定日期在夏令时期间,则执行查询。
 voidsetDSTSavings(int millisSavedDuringDST)
          设置在夏令时期间时钟提前的时间量(以毫秒为单位)。
 voidsetEndRule(int endMonth, int endDay, int endTime)
          将夏令时结束规则设置为某个月份的固定日期。
 voidsetEndRule(int endMonth, int endDay, int endDayOfWeek, int endTime)
          设置夏令时结束规则。
 voidsetEndRule(int endMonth, int endDay, int endDayOfWeek, int endTime, boolean after)
          将夏令时结束规则设置为某个月份给定日期之前或之后的星期几,例如,8 号或之后的第一个星期一。
 voidsetRawOffset(int offsetMillis)
          把基准时区偏移量设置到 GMT。
 voidsetStartRule(int startMonth, int startDay, int startTime)
          将夏令时开始规则设置为某个月份的固定日期。
 voidsetStartRule(int startMonth, int startDay, int startDayOfWeek, int startTime)
          设置夏令时的开始规则。
 voidsetStartRule(int startMonth, int startDay, int startDayOfWeek, int startTime, boolean after)
          将夏令时开始规则设置为某个月份给定日期之前或之后的星期几,例如,8 号或之后的第一个星期一。
 voidsetStartYear(int year)
          设置夏令时的开始年份。
 StringtoString()
          返回此时区的字符串表示形式。
 booleanuseDaylightTime()
          如果此时区使用夏令时,则执行查询。
 
从类 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 参数超出范围。