SimpleDateFormat解析的时区问题

7 篇文章 0 订阅

为了解析“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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值