0
String date="12/20/20102";
        SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");           
             Date today;
            try {
                today = df.parse(date.trim());
              Log.e("Error", "Correct");
            } catch (java.text.ParseException e) {
                // TODO Auto-generated catch block
                Log.e("Error", "InCorrect");
            } 

我无法纠正这个问题。我总是得到这个转换,如果我给出一个不正确的日期字符串,它也不会在异常中捕获。

请帮我。

4

6 回答 6

2

String date="12/2/2012"应该是String date="12/02/2012"。应该有前导零。
前任。

int month = 3;
int dayOfMonth = 4;
int year = 2012;

String date = String.format("%02d",dayOfMonth)+"/"
             + String.format("%02d",month)+"/" 
             + year;
于 2012-04-12T09:20:29.870 回答
1

试试这个方法

 String s_date="12/1/2006";
 Date date = null ; 
 DateFormat formatter= new SimpleDateFormat("dd/MM/yyyy");
 date = (Date)formatter.parse(s_date);
于 2012-04-12T09:31:56.460 回答
1

您的字符串输入是:

String date="12/20/20102";
SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy"); 

两个错误:

  1. 字符串日期 = "12/20/ 20122 "; // 它应该是“2012 年 12 月 20

  2. 您的字符串输入采用MM/dd/yyyy格式,而您尝试以dd/MM/yyyy格式进行解析。更改您的字符串输入格式 (20/12/2012) 或将格式化程序更改为 (MM/dd/yyyy)。

编辑

这是用于验证dd/MM/yyyy格式的用户输入日期的示例代码。

String str = txt.getText().toString();

            try{
            String tmp[] = str.split("/");
            int day = Integer.parseInt(tmp[0]);
            int month = Integer.parseInt(tmp[1]);
            int year = Integer.parseInt(tmp[2]);

                if(!(day > 31) && !(month > 12) && (tmp[2].length() == 4) )
                {
                    // Verified date....
                }
                else
                {
                    Toast.makeText(getBaseContext(), "Please enter date in correct format. (dd/MM/yyy)", Toast.LENGTH_SHORT).show();
                }
            }
            catch (Exception e) {
                Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_SHORT).show();
            }

注意:闰年和二月逻辑未实现。

对所有可用条件进行全面验证。 http://www.mkyong.com/regular-expressions/how-to-validate-date-with-regular-expression/

如果它对您有帮助,请不要忘记接受这一点。

谢谢...

于 2012-04-12T09:36:48.480 回答
1

在您的代码中,您有 String date="12/20/20102";

这是正确的还是必须是正确的

String date="12/20/2012";
于 2012-04-12T09:27:59.740 回答
0

您想要验证用户输入的日期。

你的代码是。

String date="12/20/20102";
    SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");           
         Date today;
        try {
            today = df.parse(date.trim());
          Log.e("Error", "Correct");
        } catch (java.text.ParseException e) {
            // TODO Auto-generated catch block
            Log.e("Error", "InCorrect");
        } 

我知道这不会有任何异常。但是如果您输入20102这不会将年份设置为2012。所以在上面的代码检查条件之后..

       if(!(df.format(today).equals(date))){
                 Log.e("Error", "InCorrect Date");
           }
于 2012-04-12T11:42:45.493 回答
0

如果我没记错,您正在检查用户输入的日期是写入还是错误。然后使用以下方法进行检查。

private boolean convertStringToDate(String date){
        SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");           
        Date today = null;
        try {
            today = df.parse(date.trim());
            Log.e("Error", "Correct");
        } catch (java.text.ParseException e) {
            // TODO Auto-generated catch block
            Log.e("Error", "InCorrect");
            return false;
        }       
        return true;//if every thing is write
    }

从您的代码中,您可以按如下方式使用它

boolean isValidDate = convertStringToDate("12/20/20102");
于 2012-04-12T10:47:48.707 回答