解析日期java

时间:2012-05-23 18:44:04

标签: java date format

如何将此日期格式Mon May 14 2010 00:00:00 GMT+0100 (Afr. centrale Ouest)解析为此日期格式05-14-2010我的意思是mm-dd-yyyy

它告诉我这个错误:

java.text.ParseException: Unparseable date: "Mon May 14 2010 00:00:00 GMT+0100 (Afr. centrale Ouest)"

修改

SimpleDateFormat formatter = new SimpleDateFormat("M-d-yyyy");
newFirstDate = formatter.parse(""+vo.getFirstDate());  //here the error

提前致谢!

2 个答案:

答案 0 :(得分:5)

此代码首先调整字符串,然后继续解析它。它尊重时区,只删除“GMT”,因为SimpleDateFormat喜欢它。

final String date = "Mon May 14 2010 00:00:00 GMT+0100 (Afr. centrale Ouest)"
  .replaceFirst("GMT", "");
System.out.println(
    new SimpleDateFormat("MM-dd-yyyy").format(
        new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss Z").parse(date)));

打印:

05-14-2010

请记住,输出也是时区敏感的。输入字符串定义的瞬间被解释为在我的时区属于程序打印的日期。如果您只是需要将“2010年5月14日”转换为“05-14-2010”,那就是另一个故事而SimpleDateFormat并不适合。 JodaTime库可以更清晰地处理这种情况。

答案 1 :(得分:2)

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test
{
    public static void main( String args[] ) throws ParseException
    {
        // Remove GMT from date string.
        String string = "Mon May 14 2010 00:00:00 GMT+0100 (Afr. centrale Ouest)".replace( "GMT" , "" );

        // Parse string to date object.
        Date date = new SimpleDateFormat( "EEE MMM dd yyyy HH:mm:ss Z" ).parse( string );

        // Format date to new format
        System.out.println( new SimpleDateFormat( "MM-dd-yyyy" ).format( date ) );
    }
}

输出:

05-13-2010