`
kingquake21
  • 浏览: 262098 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SimpleDateFormat解析的时区问题

阅读更多

为了解析“2011-12-07 15:33:17.372 CST”这个字符串

 

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.Calendar;

public class Test{
        public static void main(String[] args) throws ParseException{
    
                System.out.println(Calendar.getInstance().getTimeZone());
                System.out.println(Locale.getDefault());
                System.out.println("Today is :" + new Date());
                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S z");
                System.out.println("2011-12-07 15:33:17.372 CST被解析成了" + dateFormat.parse("2011-12-07 15:33:17.372 CST"));
                System.out.println("2011-12-07 15:33:17.372 HKT被解析成了" + dateFormat.parse("2011-12-07 15:33:17.372 HKT"));
        }

}
 

本地服务器A是香港时区(HKT),另一台服务器B是上海时区(CST),从B发给A的时间字符串为“2011-12-07 15:33:17.372 CST”,结果在A中被解析成了“Thu Dec 08 05:33:17 HKT 2011”

 

原因是因为SimpleDateFormat在解析这个字符串时,将CST当做了美国中部时区,属于西6区,而香港和北京时区都是东8区,两者相差14个小时,于是就有了上面那个问题

 

这可以通过将B服务器的时区修改为香港时区(HKT)来解决,在linux下面的命令是tzselect

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics