使用Timezone,Calendar类,可以,查一下文档吧。

解决方案 »

  1.   

    String str = "Tuesday, October 12, 2004 Posted: 1:27 AM EDT";
    SimpleDateFormat sdf = new SimpleDateFormat("EEEE, MMMM dd, yyyy 'Posted:' hh:mm aa zz",Locale.US);
    System.out.println(sdf.parse(str));在Java里面Date本身是可以说没有时区的,只是在输出的时候有相应的转换如果你需要输出GMT的时间
      

  2.   

    这个Parsing我是会的,就是不知道如何用Calendar转换GMT。比如说下边这样行不行?String str = "Tuesday, October 12, 2004 Posted: 1:27 AM EDT";
    SimpleDateFormat sdf = new SimpleDateFormat("EEEE, MMMM dd, yyyy 'Posted:' hh:mm aa zz",Locale.US);Date rawTime = sdf.parse(str);Calendar gc = new GregorianCalendar(TimeZone.getTimeZone("EDT"))
    gc.setTime(rawTime);/*这里得到了一个Calendar,时区是EDT,然后我想将这个Calendar转成GMT,之后再作下边的处理…… */sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    String finalOutput = sdf.format(gc.getTime());不知道各位看到区别没有,原始的时间字符串是EDT时区的,这里转化成为GMT时间的字符串,而且要求转化不能损失精度。另外我还想问一下好像新JDK废止了时区缩写的用法,就是说TimeZone.getTimeZone("EDT")不能再识别这个“EDT"时区了,只能返回默认GMT时区,有什么办法可以改过来呢?不好意思我水平粗浅,还要向各位多多学习。
      

  3.   

    你需要输出什么时区的话是的确不可以使用EDT这个字符串,而是使用
    sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    sdf.setTimeZone(TimeZone.getTimeZone("EST5EDT");
    String finalOutput = sdf.format(gc.getTime());