- java.lang.Object
-
- java.util.TimeZone
-
- java.util.SimpleTimeZone
-
- All Implemented Interfaces:
-
Serializable
,Cloneable
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。
WALL_TIME
,STANDARD_TIME
和UTC_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
- 另请参见:
-
Calendar
,GregorianCalendar
,TimeZone
, Serialized Form
-
-
构造方法摘要
构造方法 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()
查询此时区是否使用夏令时。-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from class java.util.TimeZone
getAvailableIDs, getAvailableIDs, getDefault, getDisplayName, getDisplayName, getDisplayName, getDisplayName, getID, getTimeZone, getTimeZone, setDefault, setID, toZoneId
-
-
-
-
字段详细信息
-
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以及开始和结束夏令时的规则。startTime
和endTime
都被指定为在挂钟时间中表示。 夏令时假设为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以及开始和结束夏令时的规则。 假定startTime
和endTime
均以挂钟时间表示。 这个构造函数相当于: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以及开始和结束夏令时的规则。 该构造函数采用完整的开始和结束规则参数,包括startTime
和endTime
模式。 该模式指定wall time
或standard time
或UTC 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_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),例如1月份为0。 -
startDay
- 夏令时开始的月份中的日期。 请参阅此参数的特殊情况的类描述。 -
startDayOfWeek
- 从白天开始的夏令时。 请参阅此参数的特殊情况的类描述。 -
startTime
- 本地挂钟时间的夏令时开始时间,这是本例中的本地标准时间。 - 异常
-
IllegalArgumentException
-如果startMonth
,startDay
,startDayOfWeek
,或startTime
参数超出范围
-
setStartRule
public void setStartRule(int startMonth, int startDay, int startTime)
将夏令时开始规则设置为一个月内的固定日期。 此方法相当于:setStartRule(startMonth, startDay, 0, startTime)
- 参数
-
startMonth
- 夏令时开始月份。 月份是一个MONTH
字段值(基于0),例如1月份为0。 -
startDay
- 夏令时开始的月份中的日期。 -
startTime
- 本地挂钟时间的夏令时开始时间,在这种情况下是本地标准时间。 请参阅此参数的特殊情况的类描述。 - 异常
-
IllegalArgumentException
-如果startMonth
,startDayOfMonth
,或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
-如果startMonth
,startDay
,startDayOfWeek
,或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
-如果endMonth
,endDay
,endDayOfWeek
,或endTime
参数超出范围
-
setEndRule
public void setEndRule(int endMonth, int endDay, int endTime)
将夏令时结束规则设置为一个月内的固定日期。 此方法相当于:setEndRule(endMonth, endDay, 0, endTime)
- 参数
-
endMonth
- 夏令时结束月份。 月是一个MONTH
字段值(基于0),例如10月10日。 -
endDay
- 夏令时结束的月份中的日期。 -
endTime
- 本地挂钟时间的夏令时结束时间,(本日为毫秒),这是当地的夏令时。 - 异常
-
IllegalArgumentException
-的endMonth
,endDay
,或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
-的endMonth
,endDay
,endDayOfWeek
,或endTime
参数超出范围 - 从以下版本开始:
- 1.2
-
getOffset
public int getOffset(long date)
在给定时间返回此时区与UTC的偏移量。 如果夏令时在给定的时间有效,则偏移量将随着夏令时的调整而调整。- 重写:
-
getOffset
在TimeZone
- 参数
-
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)
而不是调用此方法。- Specified by:
-
getOffset
在TimeZone
- 参数
-
era
- 给定日期的时代。 -
year
- 给定日期的年份。 -
month
- 给定日期的月份。 月份为0。 例如,1月份为0。 -
day
- 给定日期的日期。 -
dayOfWeek
- 给定日期的星期几。 -
millis
- 标准当地时间的毫秒数。 - 结果
- 添加到UTC以获取本地时间的毫秒数。
- 异常
-
IllegalArgumentException
-的era
,month
,day
,dayOfWeek
,或millis
参数超出范围 - 另请参见:
-
Calendar.ZONE_OFFSET
,Calendar.DST_OFFSET
-
getRawOffset
public int getRawOffset()
获取此时区的GMT偏移量。- Specified by:
-
getRawOffset
在TimeZone
- 结果
- 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
- 相对于夏令时规则生效的标准时间,时间提前的毫秒数。 正数,通常为1小时(3600000)。 - 从以下版本开始:
- 1.2
- 另请参见:
-
getDSTSavings()
-
getDSTSavings
public int getDSTSavings()
返回时钟在夏令时期间提前的时间(以毫秒为单位)。- 重写:
-
getDSTSavings
在TimeZone
- 结果
- 相对于夏令时规则生效的标准时间,时间提前的毫秒数,如果该时区没有观察到夏令时,则为0(零)。
- 从以下版本开始:
- 1.2
- 另请参见:
-
setDSTSavings(int)
-
useDaylightTime
public boolean useDaylightTime()
查询此时区是否使用夏令时。- Specified by:
-
useDaylightTime
在TimeZone
- 结果
- 如果该时区使用夏令时,则为真; 否则为假。
- 另请参见:
-
TimeZone.inDaylightTime(Date)
,Calendar.DST_OFFSET
-
observesDaylightTime
public boolean observesDaylightTime()
如果SimpleTimeZone
观察到夏令时,则返回true
。 此方法相当于useDaylightTime()
。- 重写:
-
observesDaylightTime
在TimeZone
- 结果
-
true
如果这个SimpleTimeZone
观察夏令时; 否则为false
。 - 从以下版本开始:
- 1.7
- 另请参见:
-
TimeZone.useDaylightTime()
,TimeZone.inDaylightTime(Date)
,Calendar.DST_OFFSET
-
inDaylightTime
public boolean inDaylightTime(Date date)
查询给定日期是否在夏令时。- Specified by:
-
inDaylightTime
在TimeZone
- 参数
-
date
- 给定日期。 - 结果
- 如果夏令时在给定日期生效,则为真; 否则为假。
-
clone
public Object clone()
返回此SimpleTimeZone
实例的克隆。
-
hashCode
public int hashCode()
生成SimpleDateFormat对象的哈希码。- 重写:
-
hashCode
在Object
- 结果
- 该对象的哈希码
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
equals
public boolean equals(Object obj)
比较两个SimpleTimeZone
对象的相等性。- 重写:
-
equals
在Object
- 参数
-
obj
- 要比较的SimpleTimeZone
对象。 - 结果
-
如果给定的
obj
与此SimpleTimeZone
对象相同,SimpleTimeZone
; 否则为假。 - 另请参见:
-
Object.hashCode()
,HashMap
-
hasSameRules
public boolean hasSameRules(TimeZone other)
如果此区域具有与其他区域相同的规则和偏移量,则返回true
。- 重写:
-
hasSameRules
在TimeZone
- 参数
-
other
- 要比较的TimeZone对象 - 结果
-
true
如果给定的区域是一个SimpleTimeZone并具有与此相同的规则和偏移量 - 从以下版本开始:
- 1.2
-
-