- 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 方法 描述 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)查询给定日期是否在夏令时。booleanobservesDaylightTime()如果这个SimpleTimeZone观察到夏令时,则返回true。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()查询此时区是否使用夏令时。-
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
-
-