有个Calendar 类型的数据,值为:2008-12-04T09:30:47-05:00
现在想把它转换成日期类型。想得到值:2008-12-04 09:30:47
Calendar  datetime
Date dt=datetime.getTime();
System.out.println(dt);
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(dt));输出的两个值:
Thu Dec 04 22:30:47 CST 2008
2008-12-04 22:30:47请高手帮解决一下,
这里出现22时,可能与时区有关吧。因为数据是西五区,而我们这是东八区,相差了十三个小时,请问是不是这个问题啊?
如果处理才能忽略掉时区呢?

解决方案 »

  1.   

    有个Calendar 类型的数据,值为:2008-12-04T09:30:47-05:00
    这个应该是西五区时间了,后面不是有一个-05:00嘛,这个表示比标准时间晚5个小时,
    你现在的时区默认是操作系统当前时区,在中国是东八区,GMT+8:00 ,转换过来当然就少 8+5 = 13个小时了。不能忽略时区,你可以修改一下默认的时区可以得到你想要的
    TimeZone.setDefault(TimeZone.getTimeZone("GMT-5"));
      

  2.   

    函数:
    public static void setDefault(TimeZone zone)设置由 getDefault 方法返回的 TimeZone。如果 zone 为 null,把默认值重设为第一次启动虚拟机时的最初值。 
    参数:
    zone - 新的默认时区可参考API文档:TimeZone 表示时区偏移量,也可以计算夏令时。 
    通常,使用 getDefault 获取 TimeZone,getDefault 基于程序运行所在的时区创建 TimeZone。例如,对于在日本运行的程序,getDefault 基于日本标准时间创建 TimeZone 对象。 
    也可以用 getTimeZone 及时区 ID 获取 TimeZone 。例如美国太平洋时区的时区 ID 是 "America/Los_Angeles"。因此,可以使用下面语句获得美国太平洋时间 TimeZone 对象: 
     TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
     可以使用 getAvailableIDs 方法来对所有受支持的时区 ID 进行迭代。可以选择受支持的 ID 来获得 TimeZone。如果想要的时区无法用受支持的 ID 之一表示,那么可以指定自定义时区 ID 来生成 TimeZone。自定义时区 ID 的语法是: 
     CustomID:
             GMT Sign Hours : Minutes
             GMT Sign Hours Minutes
             GMT Sign Hours
    Sign: 下面之一
             + -
     Hours:
             Digit
             Digit Digit
     Minutes:
             Digit Digit
     Digit: 下面之一
             0 1 2 3 4 5 6 7 8 9
     Hours 必须在 0 至 23 之间,Minutes 必须在 00 至 59 之间。例如,"GMT+10" 和 "GMT+0010" 分别意味着比 GMT 提前 10 小时和 10 分钟。 
    格式是与区域无关的,并且数字必须取自 Unicode 标准的 Basic Latin 块。没有夏令时转换安排可以用自定义时区 ID 指定。如果指定的字符串与语法不匹配,就使用 "GMT"。 
    当创建一个 TimeZone 时,指定的自定义时区 ID 采用下面的语法进行标准化: 
     NormalizedCustomID:
             GMT Sign TwoDigitHours : Minutes
    Sign: 下面之一
             + -
     TwoDigitHours:
             Digit Digit
     Minutes:
             Digit Digit
     Digit: 下面之一
             0 1 2 3 4 5 6 7 8 9
     例如,TimeZone.getTimeZone("GMT-8").getID() 返回 "GMT-08:00"。