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

コードにはStringdate="12/20/20102"があります。

これは正しいですか、それとも正しいものでなければなりません

String date="12/20/2012";
于 2012-04-12T09:27:59.740 に答える
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"); 

2つの間違い:

  1. 文字列日付=" 2012/12/20 "; //「2012年12月20日」である必要があります

  2. 文字列入力がMM/dd / yyyy形式であり、 dd / MM/yyyy形式で解析しようとしています。文字列入力形式を変更する(2012年12月20日)か、フォーマッターを(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();
            }

注:うるう年と2月の月のロジックは実装されていません。

ここで利用可能なすべての条件による完全な検証。 http://www.mkyong.com/regular-expressions/how-to-validate-date-with-regular-expression/

そして、それがあなたを助けるならば、これを受け入れることを忘れないでください。

ありがとう...

于 2012-04-12T09:36:48.480 に答える
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 に答える
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 に答える