我是靠谱客的博主 感性面包,最近开发中收集的这篇文章主要介绍Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(7) 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+", ");

 

输出结果

  View Code

 

例如,创建上面第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()
复制代码

 

 


2 TimeZone示例

下面通过示例演示在Date中使用TimeZone。
参考代码如下(TimeZoneTest.java):

复制代码
import java.text.DateFormat;
import java.util.Date;
import java.util.TimeZone;
/**
* TimeZone的测试程序
*
* @author skywang
* @email kuiwu-wang@163.com
*/
public class TimeZoneTest {
public static void main(String[] args) {
// 测试创建TimeZone对象的3种方法

showUsageOfTimeZones() ;
// 测试TimeZone的其它API

testOtherAPIs() ;
// 打印getTimeZone(String id)支持的所有id
//printAllTimeZones() ;

}
/**
* 测试创建TimeZone对象的3种方法
*/
public static void showUsageOfTimeZones() {
TimeZone tz;
// (01) 默认时区
tz = TimeZone.getDefault();
printDateIn(tz) ;
// (02) 设置时区为"GMT+08:00"
tz = TimeZone.getTimeZone("GMT+08:00");
printDateIn(tz) ;
// (03) 设置时区为""
tz = TimeZone.getTimeZone("Asia/Chongqing");
printDateIn(tz) ;
}
/**
* 打印 tz对应的日期/时间
*/
private static void printDateIn(TimeZone tz) {
// date为2013-09-19 14:22:30
Date date = new Date(113, 8, 19, 14, 22, 30);
// 获取默认的DateFormat,用于格式化Date
DateFormat df = DateFormat.getInstance();
// 设置时区为tz

df.setTimeZone(tz);
// 获取格式化后的字符串
String str = df.format(date);
System.out.println(tz.getID()+" :"+str);
}
/**
* 测试TimeZone的其它API
*/
public static void testOtherAPIs() {
// 默认时区
TimeZone tz = TimeZone.getDefault();
// 获取“id”
String id = tz.getID();
// 获取“显示名称”
String name = tz.getDisplayName();
// 获取“时间偏移”。相对于“本初子午线”的偏移,单位是ms。
int offset = tz.getRawOffset();
// 获取“时间偏移” 对应的小时
int gmt = offset/(3600*1000);
System.out.printf("id=%s, name=%s, offset=%s(ms), gmt=%sn",
id, name, offset, gmt);
}
/**
* 打印getTimeZone(String id)支持的所有id
*/
public static void printAllTimeZones() {
String[] ids = TimeZone.getAvailableIDs();
for (String id:ids) {
//int offset = TimeZone.getTimeZone(avaIds[i]).getRawOffset();
//System.out.println(i+"
"+avaIds[i]+" "+offset / (3600 * 1000) + "t");
System.out.printf(id+", ");
}
System.out.println();
}
}
复制代码

 


更多内容

Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(1) Calendar

Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(2) 自己封装的Calendar接口

Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(3) Date

Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(4) DateFormat

Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(5) SimpleDateFormat

Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(6) Locale

Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(7) TimeZone

最后

以上就是感性面包为你收集整理的Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(7) TimeZone的全部内容,希望文章能够帮你解决Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(7) TimeZone所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部