Posted on 2008-04-29 20:52
tanzek 阅读(6950)
评论(3) 编辑 收藏
通过SimpleDateFormat格式化日期输出是一种常见的用法,如下:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(new Date())); 如果上述代码正常工作,它将显示当前的日期年月日时分秒格式。
但是有时候它并没有如我们预期的那样,而显示的时间比当前的时间少了八个小时,或是多了八个小时,而这一切就需要我们再关注另外一个问题,那就是时区(TimeZone)。
如果我们将时区进行设置为“东八区”,那么就一切回复正常了。如下有两种方式:
1、通过改变默认的时区
TimeZone.setDefault(TimeZone.getTimeZone("GMT+8:00"));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(Calendar.getInstance())); 2、通过设定SimpleDateFormat的构造参数
通过查阅API手册,可知SimpleDateFormat还有一个构造函数:
SimpleDateFormat(String pattern, Locale locale) ,因此我们就可通过设定Locale来取得特定时区的日期格式。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
System.out.println(sdf.format(new Date()); 到这时候,关于时区的简单设定就结束了,更多的参考请在网上搜索关于Java Locale的设定文章。