java 时区问题
来源:技术人生 责任编辑:栏目编辑 发表时间:2013-07-01 04:56 点击:次
protected static Format format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static void printSysProperties(){
Properties props=System.getProperties();
Iterator iter=props.keySet().iterator();
while(iter.hasNext()){
String key=(String)iter.next();
System.out.println(key+" = "+ props.get(key));
}
}
/**
* timeZoneOffset表示时区,如中国一般使用东八区,因此timeZoneOffset就是8
* @param timeZoneOffset
* @return
*/
public String getFormatedDateString(int timeZoneOffset){
if (timeZoneOffset > 13 || timeZoneOffset < -12) {
timeZoneOffset = 0;
}
TimeZone timeZone;
String[] ids = TimeZone.getAvailableIDs(timeZoneOffset * 60 * 60 * 1000);
if (ids.length == 0) {
// if no ids were returned, something is wrong. use default TimeZone
timeZone = TimeZone.getDefault();
} else {
timeZone = new SimpleTimeZone(timeZoneOffset * 60 * 60 * 1000, ids[0]);
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(timeZone);
return sdf.format(new Date());
}
public static String getFormatedDateString(String _timeZone){
TimeZone timeZone = null;
if(StringUtils.isEmpty(_timeZone)){
timeZone = TimeZone.getDefault();
}else{
timeZone = TimeZone.getTimeZone(_timeZone);
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
sdf.setTimeZone(timeZone);
//TimeZone.setDefault(timeZone);
return sdf.format(new Date());
}
public static void main(String args[]){
System.out.println(getFormatedDateString(""));
System.out.println(getFormatedDateString("Asia/Shanghai"));
System.out.println(getFormatedDateString("Japan"));
System.out.println(getFormatedDateString("Europe/Madrid"));
System.out.println(getFormatedDateString("GMT+8:00"));
printSysProperties();
}
public static void printSysProperties(){
Properties props=System.getProperties();
Iterator iter=props.keySet().iterator();
while(iter.hasNext()){
String key=(String)iter.next();
System.out.println(key+" = "+ props.get(key));
}
}
/**
* timeZoneOffset表示时区,如中国一般使用东八区,因此timeZoneOffset就是8
* @param timeZoneOffset
* @return
*/
public String getFormatedDateString(int timeZoneOffset){
if (timeZoneOffset > 13 || timeZoneOffset < -12) {
timeZoneOffset = 0;
}
TimeZone timeZone;
String[] ids = TimeZone.getAvailableIDs(timeZoneOffset * 60 * 60 * 1000);
if (ids.length == 0) {
// if no ids were returned, something is wrong. use default TimeZone
timeZone = TimeZone.getDefault();
} else {
timeZone = new SimpleTimeZone(timeZoneOffset * 60 * 60 * 1000, ids[0]);
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(timeZone);
return sdf.format(new Date());
}
public static String getFormatedDateString(String _timeZone){
TimeZone timeZone = null;
if(StringUtils.isEmpty(_timeZone)){
timeZone = TimeZone.getDefault();
}else{
timeZone = TimeZone.getTimeZone(_timeZone);
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
sdf.setTimeZone(timeZone);
//TimeZone.setDefault(timeZone);
return sdf.format(new Date());
}
public static void main(String args[]){
System.out.println(getFormatedDateString(""));
System.out.println(getFormatedDateString("Asia/Shanghai"));
System.out.println(getFormatedDateString("Japan"));
System.out.println(getFormatedDateString("Europe/Madrid"));
System.out.println(getFormatedDateString("GMT+8:00"));
printSysProperties();
}
时间区域和JAVA
涉及有关时间区域信息时Java和Solaris很相似。每个时间区域都有一个时间区域ID标识符。在J2SE 1.3 and 1.4中,这个ID是个字符串,是由位于J2SE 安装程序的jre/lib子目录中的tzmappings文件这些ID列表。 J2SE 1.3 仅仅只包含tzmappings文件,但是 J2SE 1.4包含世界不同地区的时间区域数据文件。jre/lib/zi存放着这些文件。在J2SE 1.4里,sun.util.calendar.ZoneInfo从这些文件获取DST规则。在Solaris中, 这些时间区域数据文件是以二进制形式存放的,不是文本文件,因此你不能看它们。 在J2SE 1.4中的时间区域数据文件和在Solaris中是不同的。
java.util.TimeZone类中getDefault方法的源代码显示,它最终是会调用sun.util.calendar.ZoneInfo类的getTimeZone 方法。这个方法为需要的时间区域返回一个作为ID的String参数。这个默认的时间区域ID是从 user.timezone (system)属性那里
相关新闻>>
- 发表评论
-
- 最新评论 更多>>