使用一个字符串值 android 以不同格式显示日期时出现问题

issue in display Date in different format with one string value android

朋友们好,我有一个日期字符串值,例如“2015-02-04”,下面是我的代码

Date todaysDate = new java.util.Date("2015-02-07");
SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat df2 = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
SimpleDateFormat df3 = new SimpleDateFormat("dd-MMM-yyyy");
SimpleDateFormat df4 = new SimpleDateFormat("MM dd, yyyy");
SimpleDateFormat df5 = new SimpleDateFormat("E, MMM dd yyyy");
SimpleDateFormat df6 = new SimpleDateFormat("E, MMM dd yyyy HH:mm:ss");


try
{
    //format() method Formats a Date into a date/time string. 
    String testDateString = df.format(todaysDate);
    System.out.println("String in dd/MM/yyyy format is: " + testDateString);
    String str2 = df2.format(todaysDate);
    System.out.println("String in dd-MM-yyyy HH:mm:ss format is: " + str2);
    String str3 = df3.format(todaysDate);
    System.out.println("String in dd-MMM-yyyy format is: " + str3);
    String str4 = df4.format(todaysDate);
    System.out.println("String in MM dd, yyyy format is: " + str4);
    String str5 = df5.format(todaysDate);
    System.out.println("String in E, MMM dd yyyy format is: " + str5);
    String str6 = df6.format(todaysDate);
    System.out.println("String in E, E, MMM dd yyyy HH:mm:ss format is: " + str6);

}
catch (Exception ex ){
    System.out.println(ex);
}

当我 运行 上面的代码时,我给了我

这样的错误
02-05 16:34:28.288: E/AndroidRuntime(27931): Caused by: java.lang.IllegalArgumentException
02-05 16:34:28.288: E/AndroidRuntime(27931):    at java.util.Date.parse(Date.java:437)
02-05 16:34:28.288: E/AndroidRuntime(27931):    at java.util.Date.<init>(Date.java:149)
02-05 16:34:28.288: E/AndroidRuntime(27931):    at com.example.paginationdemo.Demp.onCreate(Demp.java:33)

在行 Date todaysDate = new java.util.Date("2015-02-07");

知道我该如何解决吗?

简单:不要使用 deprecated new Date(String) 构造函数。相反,创建一个具有正确格式的 SimpleDateFormat,并使用 parse 方法。

DateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
format.setTimeZone(TimeZone.getTimeZone("etc/UTC"));
Date date = format.parse("2015-02-07");

始终 查看编译器警告,例如当您使用已弃用的成员时。它们通常因某种原因被弃用!