将字符串转换为日期不起作用

时间:2012-04-12 09:18:15

标签: android simpledateformat

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");
            } 

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

请帮帮我。

6 个答案:

答案 0 :(得分: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;

答案 1 :(得分:1)

你的代码中有

    字符串日期=“12/20/20102”;

这是正确的还是正确的

String date="12/20/2012";

答案 2 :(得分:1)

试试这种方式

 String s_date="12/1/2006";
 Date date = null ; 
 DateFormat formatter= new SimpleDateFormat("dd/MM/yyyy");
 date = (Date)formatter.parse(s_date);

答案 3 :(得分:1)

您的字符串输入是:

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

两个错误:

  1. 字符串日期=“12/20 / 20122 ”; //应该是“12/20 / 2012

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

  3. 修改

    以下是以 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();
                }
    

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

    完整验证,此处提供所有条件。 http://www.mkyong.com/regular-expressions/how-to-validate-date-with-regular-expression/

    如果对你有所帮助,别忘了接受这个。

    ...谢谢

答案 4 :(得分: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");

答案 5 :(得分: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");
           }