- 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以及开始和结束日光时间的规则。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 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()
查询此时区是否使用夏令时。-
声明方法的类 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
对象相同,SimpleTimeZone
True;否则为SimpleTimeZone
。 否则是假的。 - 另请参见:
-
Object.hashCode()
,HashMap
-
hasSameRules
public boolean hasSameRules(TimeZone other)
如果此区域具有与另一个区域相同的规则和偏移量,则返回true
。- 重写:
-
hasSameRules
在类TimeZone
- 参数
-
other
- 要与之比较的TimeZone对象 - 结果
-
true
如果给定区域是SimpleTimeZone并且具有与此区域相同的规则和偏移量 - 从以下版本开始:
- 1.2
-
-