云自无心水自闲

天平山上白云泉,云自无心水自闲。何必奔冲山下去,更添波浪向人间!
posts - 288, comments - 524, trackbacks - 0, articles - 6
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

获得指定时区的格式化日期字符串

Posted on 2008-02-07 07:04 云自无心水自闲 阅读(1551) 评论(0)  编辑  收藏 所属分类: Java心得体会

 

public String getFormatedDateString(int timeZoneOffset)
        
if (timeZoneOffset > 13 || timeZoneOffset < -12{
            logger.error(
"Configuration item TimeZone " + timeZoneString + " is invalid.");
            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("yyyyMMddHHmmss");
        sdf.setTimeZone(timeZone);

        
return sdf.format(newDate);
    }

其中timeZoneOffset就是时区,比如东八区,就传入8,西二区就传入-2

新的方法,使用指定的TimeZone ID来获得TimeZone,这样更精确,因为有一些城市,虽然时区。比如:悉尼和布里斯班,都是东10区,但是悉尼实行夏令时,所以夏天的时候,悉尼要比布里斯班早1小时。

        TimeZone timeZoneSYD = TimeZone.getTimeZone("Australia/Sydney");
        TimeZone timeZoneBNE = TimeZone.getTimeZone("Australia/Brisbane");
       
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        sdf.setTimeZone(timeZoneSYD);
        Date date = new Date();
        System.out.println(sdf.format(date));
       
        sdf.setTimeZone(timeZoneBNE);
        System.out.println(sdf.format(date));

其中TimeZone的ID列表,可以使用函数
    public static String[] TimeZone.getAvailableIDs();
来获得

 





只有注册用户登录后才能发表评论。


网站导航: