日期和时间模式  结果  
"yyyy.MM.dd G 'at' HH:mm:ss z"  2001.07.04 AD at 12:08:56 PDT  
"EEE, MMM d, ''yy"  Wed, Jul 4, '01  
"h:mm a"  12:08 PM  
"hh 'o''clock' a, zzzz"  12 o'clock PM, Pacific Daylight Time  
"K:mm a, z"  0:08 PM, PDT  
"yyyyy.MMMMM.dd GGG hh:mm aaa"  02001.July.04 AD 12:08 PM  
"EEE, d MMM yyyy HH:mm:ss Z"  Wed, 4 Jul 2001 12:08:56 -0700  
"yyMMddHHmmssZ"  010704120856-0700  
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"  2001-07-04T12:08:56.235-0700  这个是api上面写,应该错不了吧
然后看具体小弟的程序String string = "2008-09-29, 9:24AM PDT";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd, h:mma z");
String str = "12:04 am";
try {
Date date = dateFormat.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}我这样根据api来写应该也没错呀,不过运行后
java.text.ParseException: Unparseable date: "2008-09-29, 9:24AM PDT"
at java.text.DateFormat.parse(Unknown Source)
at com.test.Test.main(Test.java:19)郁闷啊,经过测试后,发现标志AM/PM的符号a有问题,即 "12:08 AM" "hh:mm a" 我这样都会报异常,真的太奇怪了,达人来帮帮看看,谢谢了

解决方案 »

  1.   

    我不知道该这么改帖子,上面有个地方写错了
    Date date = dateFormat.parse(string); 
    这里是解析string这个字符串的
      

  2.   

    看的不是太懂,要24小时制的话,大写HH,12小时则hh.
      

  3.   

    我试了一下,确实是am/pm的问题,可是却也不知道怎么改才行。太奇怪了,那个API上说的明明是这种格式的啊,怎么就不行呢?
      

  4.   

    对啊,我就在为这个问题烦恼,运行api上的东西都会有错,晕死,等达人来解决
      

  5.   

    import java.utils.*;
    public class Date{
    public static void main(String[] args){
    String string = "2008-09-29, 9:24AM PDT"; 
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd, h:mma z"); 
    String str = "12:04 am"; 
    try { 
    Date date = dateFormat.format(str);
    } catch (ParseException e) { 
    e.printStackTrace(); 
    }
    Ssytem.out.println(date); 
    }
    }
      

  6.   

    楼主没考虑到区域的问题。
    此问题有两种解决方案。
    第一种: String string = "2008-09-29, 9:24上午 PDT"; 
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd, h:mma z"); 
    try { 
    Date date = dateFormat.parse(string);
    System.out.println( date );
    } catch (ParseException e) { 
    e.printStackTrace(); 
    }第二种: String string = "2008-09-29, 9:24AM PDT"; 
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd, h:mma z", Locale.US); 
    try { 
    Date date = dateFormat.parse(string);
    System.out.println( date );
    } catch (ParseException e) { 
    e.printStackTrace(); 
    }
      

  7.   

    不过,根据楼主在string中所用的PDT(太平洋夏令时)来看,似乎第二种方案才是楼主所需要的。呵呵。
      

  8.   

    确实,后来我用了老外的虚拟机后,不存在该问题,现在明白,format也要看时区的