使用SimpleDateFormat将字符串转换为日期时的小时数出错

时间:2013-12-19 03:25:56

标签: java simpledateformat

这是我的代码:

       String dateString ="Wed, 18 Dec 2013 17:40:55 EST";
       DateFormat formatter = new SimpleDateFormat("E,dd MMM yyyy HH:mm:ss Z");
       Date date=null;
       Timestamp timeStamp=null;
       try {
          date = (Date) formatter.parse(dateString);
          System.out.println("Date..."+date);
          timeStamp=new Timestamp(date.getTime());
        } catch (ParseException ex) {
        //Handle Exception
       }
       System.out.println("timestamp..."+timeStamp);    

这是我的输出。时间不同。时间戳比原始日期小3小时。任何帮助都会非常感激。如果它与我使用的时区有关,请知道正确的时区格式.Thanks。

        Wed, 18 Dec 2013 17:40:55 EST
        Date...Wed Dec 18 14:40:55 PST 2013
        timestamp...2013-12-18 14:40:55.0

2 个答案:

答案 0 :(得分:0)

查看时区...... EST - > PST相差3小时。时区是时间点的属性。指定如何根据人类可读日期来阅读它。自纪元以来的价值虽然相同。所以书面形式是在EST。我打赌你的系统时间是PST。我打赌如果时区与toString()的实现没有打印出时区,如果它与系统时区相同。

答案 1 :(得分:0)

测试了代码,它对我有用。

  

日期......周三12月18日17:40:55 2013年

     

时间戳... 2013-12-18 17:40:55.0

java版“1.7.0_25” Java(TM)SE运行时环境(版本1.7.0_25-b17) Java HotSpot(TM)64位服务器VM(内置23.25-b01,混合模式)