public class SimpleTimeZone extends TimeZone
SimpleTimeZone
是SimpleTimeZone
的具体子类, TimeZone
用于公历的时区。
该类保留与GMT的偏移量,称为原始偏移量 ,以及夏令时计划的开始和结束规则。
由于它只保留每个值,因此不能处理与GMT和夏令时偏移量的历史变化,只是setStartYear
方法可以指定夏令时开始生效的年份。
为了构建SimpleTimeZone
用日光节约时间表,时间表可以用一组规则来描述, 启动规则和最终规则 。 夏令时开始或结束的一天由月份 , 日期和星期几值的组合指定。 月份值由日历MONTH
字段值表示,例如Calendar.MARCH
。 星期几值由日历DAY_OF_WEEK
值表示,例如SUNDAY
。 价值组合的含义如下。
MARCH
, 月的日期为1, 星期几设置为0。 DAY_OF_WEEK
字段值。 例如,要指定四月份的第二个星期日,请将月份设定为APRIL
, 月的日期为8, 星期几为-
SUNDAY
。 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
。
Calendar
, GregorianCalendar
, TimeZone
, Serialized Form
Modifier and Type | Field and Description |
---|---|
static int |
STANDARD_TIME
作为标准时间指定的开始或结束时间模式的常数。
|
static int |
UTC_TIME
指定为UTC的开始或结束时间模式的常数。
|
static int |
WALL_TIME
指定为挂钟时间的开始或结束时间模式的常数。
|
Constructor and Description |
---|
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 | Method and Description |
---|---|
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()
查询此时区是否使用夏令时。
|
getAvailableIDs, getAvailableIDs, getDefault, getDisplayName, getDisplayName, getDisplayName, getDisplayName, getID, getTimeZone, getTimeZone, setDefault, setID, toZoneId
public static final int WALL_TIME
public static final int STANDARD_TIME
public static final int UTC_TIME
public SimpleTimeZone(int rawOffset, String ID)
rawOffset
- 以GMT为单位的基准时区偏移量。
ID
- 给予该实例的时区名称。
public SimpleTimeZone(int rawOffset, String ID, int startMonth, int startDay, int startDayOfWeek, int startTime, int endMonth, int endDay, int endDayOfWeek, int endTime)
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或时间参数超出开始或结束规则的范围
public SimpleTimeZone(int rawOffset, String ID, int startMonth, int startDay, int startDayOfWeek, int startTime, int endMonth, int endDay, int endDayOfWeek, int endTime, int dstSavings)
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或时间参数超出开始或结束规则的范围
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)
startTime
和endTime
模式。
该模式指定wall time
或standard time
或UTC time
。
rawOffset
- 给定的基准时区偏离GMT。
ID
- 给予该对象的时区ID。
startMonth
- 夏令时开始月份。
月份是一个MONTH
字段值(基于0),例如1月份为0。
startDay
- 夏令时开始的月份中的日期。
请参阅此参数的特殊情况的类描述。
startDayOfWeek
- 星期几开始的夏令时。
请参阅此参数的特殊情况的类描述。
startTime
-夏令时开始按指定的时间模式,时间
startTimeMode
。
startTimeMode
-
startTimeMode
的开始时间模式。
endMonth
- 夏令时结束月份。
月份是一个MONTH
字段值(基于0),例如10月的9。
endDay
- 夏令时结束的月份中的日期。
请参阅此参数的特殊情况的类描述。
endDayOfWeek
- 星期几结束的夏令时。
请参阅此参数的特殊情况的类描述。
endTime
-夏令终止指定的时间的时间模式时间
endTimeMode
。
endTimeMode
- 由endTime指定的结束时间模式
dstSavings
- 夏令时节省的时间(毫秒)。
IllegalArgumentException
- 如果月,日,dayOfWeek,时间更多或时间参数超出开始或结束规则的范围,或者时间模式值无效。
WALL_TIME
,
STANDARD_TIME
,
UTC_TIME
public void setStartYear(int year)
year
- 夏令时开始的一年。
public void setStartRule(int startMonth, int startDay, int startDayOfWeek, int startTime)
setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2*60*60*1000);
startMonth
- 夏令时开始月份。
月份是一个MONTH
字段值(基于0),例如1月份为0。
startDay
- 夏令时开始的月份中的日期。
请参阅此参数的特殊情况的类描述。
startDayOfWeek
- 星期几开始的夏令时。
请参阅此参数的特殊情况的类描述。
startTime
- 本地挂钟时间的夏令时开始时间,在这种情况下是本地标准时间。
IllegalArgumentException
-如果
startMonth
,
startDay
,
startDayOfWeek
,或
startTime
参数超出范围
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
参数超出范围
public void setStartRule(int startMonth, int startDay, int startDayOfWeek, int startTime, boolean after)
startMonth
- 夏令时开始月份。
月份是一个MONTH
字段值(基于0),例如1月份为0。
startDay
- 夏令时开始的月份中的日期。
startDayOfWeek
- 星期几开始的夏令时。
startTime
- 本地挂钟时间的夏令时开始时间,这是本例中的本地标准时间。
after
-如果为真,此规则选择第dayOfWeek
日或之后 dayOfMonth
。
如果为false,则此规则在dayOfWeek
之前或之后选择最后一个dayOfMonth
。
IllegalArgumentException
-如果
startMonth
,
startDay
,
startDayOfWeek
,或
startTime
参数超出范围
public void setEndRule(int endMonth, int endDay, int endDayOfWeek, int endTime)
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
参数超出范围
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
参数超出范围
public void setEndRule(int endMonth, int endDay, int endDayOfWeek, int endTime, boolean after)
endMonth
- 夏令时结束月份。
月份是一个MONTH
字段值(基于0),例如10月10日。
endDay
- 夏令时结束的月份。
endDayOfWeek
- 星期几结束的夏令时。
endTime
- 本地挂钟时间的夏令时结束时间,(本日为毫秒),这是当地的夏令时间。
after
- 如果为true,则此规则将选择endDayOfWeek
之后的第一个endDay
。
如果是假,这个规则选择最后endDayOfWeek
或之前endDay
的一个月。
IllegalArgumentException
-的
endMonth
,
endDay
,
endDayOfWeek
,或
endTime
参数超出范围
public int getOffset(long date)
getOffset
在
TimeZone
date
- 找到时区偏移的时间
Calendar.ZONE_OFFSET
,
Calendar.DST_OFFSET
public int getOffset(int era, int year, int month, int day, int dayOfWeek, int millis)
GregorianCalendar
对象作为其基础日历,例如用于确定闰年。
不要将此方法的结果与默认GregorianCalendar
以外的日历GregorianCalendar
。
注意:一般来说,客户端应该使用Calendar.get(ZONE_OFFSET) + Calendar.get(DST_OFFSET)
而不是调用此方法。
getOffset
在
TimeZone
era
- 给定日期的时代。
year
- 给定日期的年份。
month
- 给定日期的月份。
月份为0。
例如,1月份为0。
day
- 给定日期的日期。
dayOfWeek
- 给定日期的星期几。
millis
-
标准当地时间的毫秒数。
IllegalArgumentException
-的
era
,
month
,
day
,
dayOfWeek
,或
millis
参数超出范围
Calendar.ZONE_OFFSET
,
Calendar.DST_OFFSET
public int getRawOffset()
getRawOffset
在
TimeZone
setRawOffset(int)
public void setRawOffset(int offsetMillis)
setRawOffset
在
TimeZone
offsetMillis
- 给定的基准时区偏移到GMT。
getRawOffset()
public void setDSTSavings(int millisSavedDuringDST)
millisSavedDuringDST
- 当夏令时规则生效时,相对于标准时间的时间提前的毫秒数。
正数,通常为1小时(3600000)。
getDSTSavings()
public int getDSTSavings()
getDSTSavings
在
TimeZone
类
setDSTSavings(int)
public boolean useDaylightTime()
useDaylightTime
在
TimeZone
TimeZone.inDaylightTime(Date)
,
Calendar.DST_OFFSET
public boolean observesDaylightTime()
SimpleTimeZone
观察到夏令时,则返回true
。
此方法相当于useDaylightTime()
。
observesDaylightTime
在
TimeZone
true
如果这SimpleTimeZone
观察夏令时;
false
否则。
TimeZone.useDaylightTime()
,
TimeZone.inDaylightTime(Date)
,
Calendar.DST_OFFSET
public boolean inDaylightTime(Date date)
inDaylightTime
在
TimeZone
date
- 给定的日期。
public Object clone()
SimpleTimeZone
实例的克隆。
public int hashCode()
hashCode
在
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public boolean equals(Object obj)
SimpleTimeZone
对象的相等性。
equals
在
Object
obj
- 要比较的
SimpleTimeZone
对象。
obj
与此SimpleTimeZone
对象相同,则为真;
否则为假。
Object.hashCode()
, HashMap
public boolean hasSameRules(TimeZone other)
true
。
hasSameRules
在
TimeZone
other
- 要与之比较的TimeZone对象
true
如果给定的区域是SimpleTimeZone,并且具有与此相同的规则和偏移量