详解详解Java中的时区类中的时区类TimeZone的用法的用法
TimeZone可以用来获取或者规定时区,也可以用来计算时差,这里我们就来详解Java中的时区类TimeZone的用
法,特别要注意下面所提到的TimeZone相关的时间校准问题.
一、一、TimeZone 简介简介
TimeZone 表示时区偏移量,也可以计算夏令时。
在操作 Date, Calendar等表示日期/时间的对象时,经常会用到TimeZone;因为不同的时区,时间不同。
下面说说TimeZone对象的 2种常用创建方式。
1.获取默认的获取默认的TimeZone对象对象
使用方法:
TimeZone tz = TimeZone.getDefault()
2.使用使用 getTimeZone(String id) 方法获取方法获取TimeZone对象对象
使用方法:
// 获取 “GMT+08:00”对应的时区
TimeZone china = TimeZone.getTimeZone("GMT+:08:00");
// 获取 “中国/重庆”对应的时区
TimeZone chongqing = TimeZone.getTimeZone("Asia/Chongqing");
关于 getTimeZone(String id) 这种方式支持的全部id参数的取值,可以通过以下方式查找:
String[] ids = TimeZone.getAvailableIDs();
for (String id:ids)
System.out.printf(id+", ");
输出结果:
Etc/GMT+12, Etc/GMT+11, Pacific/Midway, Pacific/Niue ....等等
例如,创建上面第2个打印值“Etc/GMT+11”对应的TimeZone。方法如下:
TimeZone tz = TimeZone.getTimeZone("Etc/GMT+11");
TimeZone的函数接口
// 构造函数
TimeZone():
Object clone()
synchronized static String[] getAvailableIDs()
synchronized static String[] getAvailableIDs(int offsetMillis)
int getDSTSavings()
synchronized static TimeZone getDefault()
final String getDisplayName(Locale locale)
String getDisplayName(boolean daylightTime, int style, Locale locale)
final String getDisplayName()
final String getDisplayName(boolean daylightTime, int style)
String getID()
abstract int getOffset(int era, int year, int month, int day, int dayOfWeek, int timeOfDayMillis)
int getOffset(long time)
abstract int getRawOffset()
synchronized static TimeZone getTimeZone(String id)
boolean hasSameRules(TimeZone timeZone)
abstract boolean inDaylightTime(Date time)
synchronized static void setDefault(TimeZone timeZone)
void setID(String id)
abstract void setRawOffset(int offsetMillis)
abstract boolean useDaylightTime()
二、二、TimeZone示例:示例:
下面通过示例演示在Date中使用TimeZone。
参考代码如下(TimeZoneTest.java):
import java.text.DateFormat;
import java.util.Date;
import java.util.TimeZone;
/**
* TimeZone的测试程序
*/
public class TimeZoneTest {
public static void main(String[] args) {
评论0