如何将此日期格式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
提前致谢!
答案 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