java.lang.Object java.util.TimeZone java.util.SimpleTimeZone
public class SimpleTimeZone
SimpleTimeZone
是 TimeZone
的具体子类,表示一个使用格里高利历的时区。此类保持一个相对 GMT 的偏移量,称为原始偏移量,并保持夏令时安排的开始和结束规则。由于它仅为每一项保持单个值,因此它无法处理相对 GMT 的偏移量以及夏令时安排中的历史更改,除了 setStartYear
方法可以指定开始实施夏令时安排的年份之外。
要构造一个带有夏令时安排的 SimpleTimeZone
,可以使用一组规则,即开始规则 和结束规则 来描述该安排。夏令时开始或结束的那一天通过 month、day-of-month 和 day-of-week 值联合指定。month 值由 Calendar 的 MONTH
字段值表示,如 Calendar.MARCH
。day-of-week 值由 Calendar 的 DAY_OF_WEEK
值表示,如 SUNDAY
。这些值的组合含意如下。
MARCH
,day-of-month 设置为 1,并将 day-of-week 设置为 0。DAY_OF_WEEK
字段值。例如,要指定 4 月的第二个星期天,可将 month 设置为 APRIL
,day-of-month 设置为 8,并将 day-of-week 设置为 -
SUNDAY
。MARCH
,将 day-of-month 设置为 -21,并将 day-of-week 设置为 -
WEDNESDAY
。DAY_OF_WEEK
值,并将 day-of-month 设置为 -1。例如,要设置 10 月的最后一个星期日,可将 month 设置为 OCTOBER
,将 day-of-week 设置为 SUNDAY
,并将 day-of-month 设置为 -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
。
Calendar
,
GregorianCalendar
,
TimeZone
,
序列化表格
字段摘要 | |
---|---|
static int |
STANDARD_TIME 指定为标准时间的开始或结束时间模式的常量。 |
static int |
UTC_TIME 指定为 UTC 的开始或结束时间模式的常量。 |
static int |
WALL_TIME 指定为挂钟时间的开始或结束时间模式的常量。 |
从类 java.util.TimeZone 继承的字段 |
---|
LONG, SHORT |
构造方法摘要 | |
---|---|
SimpleTimeZone(int rawOffset, String ID) 使用给定的相对于 GMT 的基准时区偏移量和不带夏令时安排的时区 ID 构造一个 SimpleTimeZone。 |
|
SimpleTimeZone(int rawOffset, String ID, int startMonth, int startDay, int startDayOfWeek, int startTime, int endMonth, int endDay, int endDayOfWeek, int endTime) 根据给定的相对于 GMT 的基准时区偏移量、时区 ID 和夏令时开始和结束的规则来构造一个 SimpleTimeZone。 |
|
SimpleTimeZone(int rawOffset, String ID, int startMonth, int startDay, int startDayOfWeek, int startTime, int endMonth, int endDay, int endDayOfWeek, int endTime, int dstSavings) 根据给定的相对于 GMT 的基准时区偏移量、时区 ID 和夏令时开始和结束的规则来构造一个 SimpleTimeZone。 |
|
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) 根据给定的相对于 GMT 的基准时区偏移量、时区 ID 和夏令时开始和结束的规则来构造一个 SimpleTimeZone。 |
方法摘要 | |
---|---|
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) 如果给定日期在夏令时期间,则执行查询。 |
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, setDefault, setID |
从类 java.lang.Object 继承的方法 |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
字段详细信息 |
---|
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。例如,0 代表 1 月)。
startDay
- 夏令时开始的日期。有关此参数的特殊情形,请参阅类的描述。
startDayOfWeek
- 夏令时开始时是一周的星期几。有关此参数的特殊情形,请参阅类的描述。
startTime
- 以本地挂钟时间表示的夏令时开始时间(此天中的毫秒数),在此情况下为本地标准时间。
endMonth
- 夏令时结束的月份。月份是一个
MONTH
字段值(基于 0。例如,9 代表 10 月)。
endDay
- 夏令时结束的日期。有关此参数的特殊情形,请参阅类的描述。
endDayOfWeek
- 夏令时结束时是一周的星期几。有关此参数的特殊情形,请参阅类的描述。
endTime
- 以本地挂钟时间表示的夏令时结束时间(此天中的毫秒数),在此情况下为本地标准时间。
IllegalArgumentException
- 如果月份、日期、星期或时间参数超出开始或结束规则的范围。
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。例如,0 代表 1 月)。
startDay
- 夏令时开始的日期。有关此参数的特殊情形,请参阅类的描述。
startDayOfWeek
- 夏令时开始时是一周的星期几。有关此参数的特殊情形,请参阅类的描述。
startTime
- 以本地挂钟时间表示的夏令时开始时间,在此情况下为本地标准时间。
endMonth
- 夏令时结束的月份。月份是一个
MONTH
字段值(基于 0。例如,9 代表 10 月)。
endDay
- 夏令时结束的日期。有关此参数的特殊情形,请参阅类的描述。
endDayOfWeek
- 夏令时结束时是一周的星期几。有关此参数的特殊情形,请参阅类的描述。
startTime
- 以本地挂钟时间表示的夏令时结束时间,在此情况下为本地标准时间。
dstSavings
- 在夏令时期间节省的时间量(以毫秒为单位)。
IllegalArgumentException
- 如果月份、日期、星期或时间参数超出开始或结束规则的范围。
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
模式。此模式指定
挂钟时间
或
标准时间
或
UTC 时间
。
rawOffset
- GMT 的给定基准时区偏移量。
ID
- 此对象给定的时区 ID。
startMonth
- 夏令时开始的月份。月份是一个
MONTH
字段值(基于 0。例如,0 代表 1 月)。
startDay
- 夏令时开始的日期。有关此参数的特殊情形,请参阅类的描述。
startDayOfWeek
- 夏令时开始时是一周的星期几。有关此参数的特殊情形,请参阅类的描述。
startTime
- 由
startTimeMode
指定的时间模式的夏令时开始时间。
startTimeMode
- 由 startTime 指定的开始时间模式。
endMonth
- 夏令时结束的月份。月份是一个
MONTH
字段值(基于 0。例如,9 代表 10 月)。
endDay
- 夏令时结束的日期。有关此参数的特殊情形,请参阅类的描述。
endDayOfWeek
- 夏令时结束时是一周的星期几。有关此参数的特殊情形,请参阅类的描述。
endTime
- 由
endTimeMode
指定的时间模式的夏令时结束时间。
endTimeMode
- 由 endTime 指定的结束时间的模式。
dstSavings
- 在夏令时期间节省的时间量(以毫秒为单位)。
IllegalArgumentException
- 如果月份、日期、星期或时间参数超出开始或结束规则的范围,或者某个时间模式值无效。
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。例如,0 代表 1 月)。
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。例如,0 代表 1 月)。
startDay
- 夏令时开始的日期。
startTime
- 以本地挂钟时间表示的夏令时开始时间,在此情况下为本地标准时间。有关此参数的特殊情形,请参阅类的描述。
IllegalArgumentException
- 如果
startMonth
、
startDayOfMonth
或
startTime
参数超出范围。
public void setStartRule(int startMonth, int startDay, int startDayOfWeek, int startTime, boolean after)
startMonth
- 夏令时开始的月份。月份是一个
MONTH
字段值(基于 0。例如,0 代表 1 月)。
startDay
- 夏令时开始的日期。
startDayOfWeek
- 夏令时开始时是一周的星期几。
startTime
- 以本地挂钟时间表示的夏令时开始时间,在此情况下为本地标准时间。
after
- 如果为 true,则此规则将选择
dayOfMonth
或它
之后 的第一个
dayOfWeek
。如果为 false,则此规则将选择
dayOfMonth
或它
之前 的最后一个
dayOfWeek
。
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);
endMonth
- 夏令时结束的月份。月份是一个
MONTH
字段值(基于 0。例如,9 代表 10 月)。
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。例如,9 代表 10 月)。
endDay
- 夏令时结束的日期。
endTime
- 以本地挂钟时间表示的夏令时结束时间(此天中的毫秒数),在此情况下为本地标准时间。
IllegalArgumentException
- 如果
endMonth
、
endDay
或
endTime
参数超出范围。
public void setEndRule(int endMonth, int endDay, int endDayOfWeek, int endTime, boolean after)
endMonth
- 夏令时结束的月份。月份是一个
MONTH
字段值(基于 0。例如,9 代表 10 月)。
endDay
- 夏令时结束的日期。
endDayOfWeek
- 夏令时结束时是一周的星期几。
endTime
- 以本地挂钟时间表示的夏令时结束时间(此天中的毫秒数),在此情况下为本地标准时间。
after
- 如果为 true,则此规则将选择
endDay
或它
之后 的第一个
endDayOfWeek
。如果为 false,则此规则将选择该月份的
endDay
或它之前的最后一个
endDayOfWeek
。
IllegalArgumentException
- 如果
endMonth
、
endDay
、
endDayOfWeek
或
endTime
参数超出范围。
public int getOffset(long date)
date
- 出现时区偏移量的时间。
Calendar.ZONE_OFFSET
,
Calendar.DST_OFFSET
public int getOffset(int era, int year, int month, int day, int dayOfWeek, int millis)
GregorianCalendar
对象作为其基础日历,例如用于确定闰年。除默认的
GregorianCalendar
之外,请不要将此方法的结果与其他日历一起使用。
注:一般情况下,客户应使用 Calendar.get(ZONE_OFFSET) + Calendar.get(DST_OFFSET)
而不调用此方法。
era
- 给定日期的年代。
year
- 给定日期的年份。
month
- 给定日期的月份。月份是从 0 开始的,比如 0 代表 1 月。
day
- 给定日期的月份中的某一天。
dayOfWeek
- 给定日期的一周中的某一天。
millis
-
标准 本地时间中天的毫秒数。
IllegalArgumentException
- 如果
era
、
month
、
day
、
dayOfWeek
或
millis
参数超出范围。
Calendar.ZONE_OFFSET
,
Calendar.DST_OFFSET
public int getRawOffset()
TimeZone
中的
getRawOffset
setRawOffset(int)
public void setRawOffset(int offsetMillis)
TimeZone
中的
setRawOffset
offsetMillis
- GMT 的给定基准时区偏移量。
getRawOffset()
public void setDSTSavings(int millisSavedDuringDST)
millisSavedDuringDST
- 在夏令时规则生效时,相对于标准时间提前的毫秒数。一个正数,一般为 1 小时 (3600000)。
getDSTSavings()
public int getDSTSavings()
TimeZone
中的
getDSTSavings
setDSTSavings(int)
public boolean useDaylightTime()
TimeZone
中的
useDaylightTime
public boolean inDaylightTime(Date date)
TimeZone
中的
inDaylightTime
date
- 给定的日期。
public Object clone()
public int hashCode()
Object.equals(java.lang.Object)
,
Hashtable
public boolean equals(Object obj)
SimpleTimeZone
对象的相等性。
obj
- 要与之比较的
SimpleTimeZone
对象。
obj
与此
SimpleTimeZone
对象相同,则返回 true;否则返回 false。
Object.hashCode()
,
Hashtable
public boolean hasSameRules(TimeZone other)
true
。
TimeZone
中的
hasSameRules
other
- 要与之比较的 TimeZone 对象。
true
。
public String toString()