时区
TimeZone类即javautilTimeZone类的实例包含了一个与格林威治标准时间(GMT)相比较得出的以微秒为单位的时区偏移量而且它还处理夏令时
要获得一个所有支持的进区的列表你可以使用方法TimeZonegetAvailableIDs它将返回一个包含了所有进区ID的字符串数组要知道关于TimeZone类的更多细节可以参看Sun公司的Web站点
为了演示这个概念我们将创建三个时区对象第一个对象将使用getDefault从系统时钟返回时区数据第二个和第三个对象将传入一个时区字符串ID见表C中的代码
表 C
import javautilTimeZone;
import javautilDate;
import javatextDateFormat;
import javautilLocale;
public class DateExample {
public static void main(String[] args) {
// Get the system time zone
TimeZone timeZoneFL = TimeZonegetDefault();
Systemoutprintln(\n + timeZoneFLgetDisplayName());
Systemoutprintln(RawOffset: + timeZoneFLgetRawOffset());
Systemoutprintln(Uses daylight saving: + timeZoneFLuseDaylightTime());
TimeZone timeZoneLondon = TimeZonegetTimeZone(Europe/London);
Systemoutprintln(\n + timeZoneLondongetDisplayName());
Systemoutprintln(RawOffset: + timeZoneLondongetRawOffset());
Systemoutprintln(Uses daylight saving: + timeZoneLondonuseDaylightTime());
烛imeZone timeZoneParis = TimeZonegetTimeZone(Europe/Paris);
Systemoutprintln(\n + timeZoneParisgetDisplayName());
Systemoutprintln(RawOffset: + timeZoneParisgetRawOffset());
Systemoutprintln(Uses daylight saving: + timeZoneParisuseDaylightTime());
}
}
其输出如下
Eastern Standard Time
RawOffset:
Uses daylight saving: true
GMT+:
RawOffset:
Uses daylight saving: true
Central European Standard Time
RawOffset:
Uses daylight saving: true
正如你所看见的TimeZone对象给我们的是原始的偏移量也就是与GMT相差的微秒数而且还会告诉我们这个时区是否使用夏令时有个这个信息我们就能够继续将时区对象和日期格式化器结合在一起在其它的时区和其它的语言显示时间了
国际化的时期显示了时区转换
让我们来看一个结合了国际化显示时区和日期格式化的例子表D为一个在迈阿密和巴黎拥有办公室的公司显示了当前的完整日期和时间对于迈阿密的办公室我们将在每个办公室里用英语显示完整的日期和时间对于巴黎的办公室我们将用法语显示完整的当前日期和时间
表 D
import javautilTimeZone;
import javautilDate;
import javautilLocale;
import javatextDateFormat;
public class DateExample {
public static void main(String[] args) {
Locale localeEN = LocaleUS;
Locale localeFrance = LocaleFRANCE;
TimeZone timeZoneMiami = TimeZonegetDefault();
TimeZone timeZoneParis = TimeZonegetTimeZone(Europe/Paris);
DateFormat dateFormatter = DateFormatgetDateTimeInstance(
DateFormatFULL
DateFormatFULL
localeEN);
DateFormat dateFormatterParis = DateFormatgetDateTimeInstance(
DateFormatFULL
DateFormatFULL
localeFrance);
Date curDate = new Date();
Systemoutprintln(Display for Miami office);
// Print the Miami time zone display name in English
Systemoutprintln(timeZoneMiamigetDisplayName(localeEN));
// Set the time zone of the dateFormatter to Miami time zone
dateFormattersetTimeZone(timeZoneMiami);
// Print the formatted date
Systemoutprintln(dateFormatterformat(curDate));
// Set the time zone of the date formatter to Paris time zone
dateFormattersetTimeZone(timeZoneParis);
// Print the Paris time zone display name in English
Systemoutprintln(timeZoneParisgetDisplayName(localeEN));
// Print the Paris time in english
Systemoutprintln(dateFormatterformat(curDate));
Systemoutprintln(\nDisplay for Paris office);
// Print the Miami time zone display name in French
Systemoutprintln(timeZoneMiamigetDisplayName(localeFrance));
// Set the timezone of the
// dateFormatterParis to Miami time zone
dateFormatterParissetTimeZone(timeZoneMiami);
// Print the formatted date in French
燬ystemoutprintln(dateFormatterParisformat(curDate));
// Set the timezone of the date formatter to Paris time zone
dateFormatterParissetTimeZone(timeZoneParis);
// Print the Paris time zone display name in French
Systemoutprintln(timeZoneParisgetDisplayName(localeFrance));
// Print the Paris time in French
Systemoutprintln(dateFormatterParisformat(curDate));
}
}
这个例子的输出是
Display for Miami office
Eastern Standard Time
Friday October :: PM EDT
Central European Standard Time
Saturday October :: AM CEST
Display for Paris office
GMT:
vendredi octobre h GMT:
GMT+:
samedi octobre h GMT+: