Java 将字符串转换为日期异常

Java 将字符串转换为日期异常,java,android,Java,Android,我知道这个问题被问了很多,但我找不到解决我问题的办法。我有一个将字符串转换为日期的应用程序,我总是捕获异常。我要转换的字符串格式为:Mon,2014年8月4日。这是我的密码: try { Date d = new SimpleDateFormat("EEE, MM d, yyyy").parse(theStringToConvert); Log.i("MyApp", "Date: " + d); } catch (ParseException e){ Log.i("EXC

我知道这个问题被问了很多,但我找不到解决我问题的办法。我有一个将字符串转换为日期的应用程序,我总是捕获异常。我要转换的字符串格式为:
Mon,2014年8月4日
。这是我的密码:

try {
    Date d = new SimpleDateFormat("EEE, MM d, yyyy").parse(theStringToConvert);
    Log.i("MyApp", "Date: " + d);
}
catch (ParseException e){
    Log.i("EXCEPTION", "Cannot parse string");
}
“MM”是“两位数的月份”。你想用“月名”来表示“月名”。此外,您应该指定区域设置,这样它就不会试图在用户的区域设置中解析它-假设它总是英语的:

import java.util.*;
import java.text.*;

public class Test {
    public static void main(String[] args) throws Exception {
        String text = "Mon, Aug 4, 2014";
        DateFormat format = new SimpleDateFormat("EEE, MMM d, yyy",
                                                  Locale.US);
        Date date = format.parse(text);
        System.out.println(date);
    }
}

您应该看看
parsexeption
到底说了些什么。解析字符串应该由计算机来完成,而不是由人来完成

无论如何,我看到的第一个问题是,您必须编写三个
M
s,而不是两个:
EEE,MMM d,yyyy
您字符串中的月份不是数字。解析字符串

class Check{
 public static void main(String args[])throws ParseException{
 String str="Mon, Aug 4, 2014";
 java.util.Date date=new SimpleDateFormat("EEE, MMM d, yyyy",Locale.ENGLISH).parse(str);
 System.out.println(date);
 }
}
Date d = new SimpleDateFormat("EEE, MMM d, yyy",Locale.US).parse(theStringToConvert);

我有一种感觉,我只是犯了一个愚蠢的错误!day参数不应该是dd吗?如果需要任何[system]区域设置,请使用
Resources.getSystem().getConfiguration().locale
而不是
locale.US
(您需要导入
android.content.res.Resources
)。注意:不要使用
Locale.getDefault()
,因为这可能会被Android应用程序覆盖。@IllegalArgument:未提供示例字符串,如果是,则为“Mon,Aug 04,2004”。(在我看来,这是一种奇怪的形式。)他肯定是在用电脑,伙计。