7

EditTextが2つあります。1つは開始日、もう1つは終了日です。検証を行い、終了日が開始日よりも大きいかどうかを確認する必要があります。どうすればいいのかわかりません。

私のコードでは、2つの日付を日数で区別します。また、終了日が開始日よりも大きいかどうかを確認する必要があります。

これが私のコードです:

             //EditText with string of start date
            dataInicio = (EditText)findViewById(R.id.ses_dpDataIni);
             //EditText with string of end date
    dataFim = (EditText)findViewById(R.id.ses_dpDataFim);

             //Convert String to calendar to check the difference between two dates..
    try{
    dateInic = dataInicio.getText().toString();
    dateFim = dataFim.getText().toString();

    calInic=Calendar.getInstance();
    calFim = Calendar.getInstance();
    calInic.setTime(form.parse(dateInic));
    calFim.setTime(form.parse(dateFim));
    }
     catch (ParseException e) { 
         e.printStackTrace(); 
    } 
    Log.w(SessaoQuotaEdit.class.getName(),"DIFERENCA DE DIAS"  +daysBetween(calInic,calFim));
    tvDiasQuotas = (TextView)findViewById(R.id.ses_tvNumDiasQuota);
    tvDiasQuotas.setText("NUMBER OF DAYS: " +daysBetween(calInic,calFim));

            //CHECK IS END-DATE IS GREATER THAN START-DATE
             .............
             .............

手伝って頂けますか?ありがとう :)

4

10 に答える 10

23
SimpleDateFormat dfDate  = new SimpleDateFormat("yyyy-MM-dd");
public static boolean checkDates("2012-07-12", "2012-06-12)"    {
    boolean b = false;
    try {
        if(dfDate.parse(d1).before(dfDate.parse(d2)))
        {
            b = true;//If start date is before end date
        }
        else if(dfDate.parse(d1).equals(dfDate.parse(d2)))
        {
            b = true;//If two dates are equal
        }
        else
        {
            b = false; //If start date is after the end date
        }
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return b;
}
于 2012-09-06T11:15:35.843 に答える
4

この機能を試してみてください。

public static boolean isDateAfter(String startDate,String endDate)
    {
        try
        {
            String myFormatString = "yyyy-M-dd"; // for example
            SimpleDateFormat df = new SimpleDateFormat(myFormatString);
            Date date1 = df.parse(endDate));
            Date startingDate = df.parse(startDate);

            if (date1.after(startingDate))
                return true;
            else
                return false;
        }
        catch (Exception e) 
        {

            return false;
        }
    }

終了日が開始日より後の場合、true を返します。

于 2012-09-06T11:09:07.460 に答える
1
public static boolean CheckDates(String d1, String d2){
    SimpleDateFormat dfDate  = new SimpleDateFormat("yyyy-MM-dd");
    boolean b = false;
    try {
        if(dfDate.parse(d1).before(dfDate.parse(d2)))
        {
            b = true;//If start date is before end date
        }
        else if(dfDate.parse(d1).equals(dfDate.parse(d2)))
        {
            b = true;//If two dates are equal
        }
        else
        {
            b = false; //If start date is after the end date
        }
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return b;
}
于 2019-05-21T05:41:24.160 に答える
0

DateUtils.getRelativeTimeSpanStringを試してみませんか?

于 2012-09-06T11:11:34.507 に答える
0

みんなありがとう ....

Here is my solution

        if(calInic.after(calFim)==true)
        Log.w(SessaoQuotaEdit.class.getName(),"ERROR: DATA FINAL É ANTES DA DATA INICIAL");
    else
        if(calInic.before(calFim)==true)
            Log.w(SessaoQuotaEdit.class.getName(),"CORRECTO: DATAS CORRECTAS");
        else
            if(calInic.equals(calFim)==true)
                Log.w(SessaoQuotaEdit.class.getName(),"CORRECTO: DATAS IGUAIS");
于 2012-09-06T11:21:25.103 に答える
0

Ram Kiranの簡略化された回答、1 つのステートメントのみでチェックされます。

   public static boolean checkDates(String d1, String d2) {
        SimpleDateFormat dfDate = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
        boolean b = false;
        try {
            b = dfDate.parse(d1).before(dfDate.parse(d2)) || dfDate.parse(d1).equals(dfDate.parse(d2));
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return b;
    }
于 2017-11-10T14:18:03.207 に答える