- java.lang.Object
-
- java.util.TimeZone
-
- java.util.SimpleTimeZone
-
- 实现的所有接口
-
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字段值。 例如,要指定4月的第二个星期日,请将月份设置为APRIL,将日期设置为8, 将星期几设置为-SUNDAY。 - 星期几或星期几之前的星期几
要指定或每月的精确天前一周的某一天,设置和日常的周 月某一天的负值。 例如,要指定3月21日或之前的最后一个星期三,请将月份设置为MARCH,将日期设置为-21, 将星期几设置为-WEDNESDAY。 - 一个月的最后一天
要指定,最后一天的周月,集日的一周到DAY_OF_WEEK值和一天的日 -1。 例如,设定每月设置10月的最后一个星期日,到OCTOBER, 日的一周至SUNDAY, 日的日 -1。
WALL_TIME,STANDARD_TIME和UTC_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, Serialized Form
-
-
构造方法摘要
构造方法 构造器 描述 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以及开始和结束日光时间的规则。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 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()查询此时区是否使用夏令时。-
声明方法的类 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
- 另请参见:
- 常数字段值
-
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以及开始和结束日光时间的规则。startTime和endTime均指定为挂钟时间。 假设夏令时量为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以及开始和结束日光时间的规则。 假设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- 如果月,日,日,周或时间参数超出开始或结束规则的范围 - 从以下版本开始:
- 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,例如,0表示1月)。 -
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是MONTH字段值(基于0,例如,1表示0)。 -
startDay- 夏令时开始的月中的某一天。 -
startDayOfWeek- 从星期几开始的夏令时。 -
startTime- 本地挂钟时间的夏令时开始时间,在这种情况下是本地标准时间。 -
after- 如果为true,则此规则选择dayOfWeek上或之后的第一个dayOfMonth。 如果为false,则此规则选择dayOfWeek上或之前的最后一个dayOfMonth。 - 异常
-
IllegalArgumentException-如果startMonth,startDay,startDayOfWeek,或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-如果endMonth,endDay,endDayOfWeek,或endTime参数超出范围
-
setEndRule
public void setEndRule(int endMonth, int endDay, int endTime)将夏令时结束规则设置为一个月内的固定日期。 这种方法相当于:setEndRule(endMonth, endDay, 0, endTime)- 参数
-
endMonth- 夏令时结束月份。 月份是MONTH字段值(基于0,例如,10月份为9)。 -
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的日历GregorianCalendar。注意:通常,客户端应使用
Calendar.get(ZONE_OFFSET) + Calendar.get(DST_OFFSET)而不是调用此方法。- Specified by:
-
getOffset类TimeZone - 参数
-
era- 给定日期的时代。 -
year- 指定日期的年份。 -
month- 给定日期的月份。 月份为0。 例如,0表示1月份。 -
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- 夏令时规则生效时相对于标准时间的时间提前的毫秒数。 正数,通常为一小时(3600000)。 - 从以下版本开始:
- 1.2
- 另请参见:
-
getDSTSavings()
-
getDSTSavings
public int getDSTSavings()
返回夏令时期间时钟提前的时间量(以毫秒为单位)。- 重写:
-
getDSTSavings在类TimeZone - 结果
- 相对于夏令时规则生效的标准时间,时间提前的毫秒数,如果此时区未观察夏令时,则为0(零)。
- 从以下版本开始:
- 1.2
- 另请参见:
-
setDSTSavings(int)
-
useDaylightTime
public boolean useDaylightTime()
查询此时区是否使用夏令时。- Specified by:
-
useDaylightTime课程TimeZone - 结果
- 如果此时区使用夏令时,则为true; 否则是假的。
- 另请参见:
-
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- 给定日期。 - 结果
- 如果夏令时在给定日期有效,则为true; 否则是假的。
-
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对象相同,SimpleTimeZoneTrue;否则为SimpleTimeZone。 否则是假的。 - 另请参见:
-
Object.hashCode(),HashMap
-
hasSameRules
public boolean hasSameRules(TimeZone other)
如果此区域具有与另一个区域相同的规则和偏移量,则返回true。- 重写:
-
hasSameRules在类TimeZone - 参数
-
other- 要与之比较的TimeZone对象 - 结果
-
true如果给定区域是SimpleTimeZone并且具有与此区域相同的规则和偏移量 - 从以下版本开始:
- 1.2
-
-