【问题标题】:Compare Start and End Date Android [duplicate]比较Android的开始和结束日期[重复]
【发布时间】:2014-02-19 12:36:46
【问题描述】:

我有两个功能,它可以让用户设置一个特定的日期。它是开始日期和结束日期。现在我需要 比较这两个变量,因为开始日期不应大于结束日期。这是我在android中的代码。任何帮助都可以。谢谢。

private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener()
{
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
    {
        yr = year;
        month = monthOfYear;
        day = dayOfMonth;
        Date.setText((month + 1) + "/" + day + "/" + yr);
    }
};

private DatePickerDialog.OnDateSetListener mDateSetListener1 = new DatePickerDialog.OnDateSetListener()
{
    public void onDateSet(DatePicker view1, int year1, int monthOfYear1, int dayOfMonth1)
    {
        yr = year1;
        month = monthOfYear1;
        day = dayOfMonth1;

        DateEnd.setText((month + 1) + "/" + day + "/" + yr);
    }
};

【问题讨论】:

标签: android date compare


【解决方案1】:

以下是我比较两个日期的代码,

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");

String startDate = tvStartDate.getText().toString().trim(); 
String endDate = tvEndDate.getText().toString().trim();

startDate = startDate.substring( startDate.indexOf( ":" ) + 1 ); 
endDate = endDate.substring( endDate.indexOf( ":" ) + 1 );

Date startDat = sdf.parse(startDate); 
Date endDat = sdf.parse(endDate);

if ( startDat.compareTo(endDat) <= 0 )
{
     // ok
}
else
{
    Toast.makeText(getApplicationContext(), "Start date must be lesser than or equal to End Date", Toast.LENGTH_SHORT ).show();
}

【讨论】:

    【解决方案2】:

    您可以通过以下代码进行检查。

    if (mDateSetListener.before(mDateSetListener1) || Code.DueDate.equals(Code.AssignDate)) {
        AlertDialog.Builder alertDialogBuilderDate = new AlertDialog.Builder(Assignment_Create_Ext_DB.this);
        alertDialogBuilderDate.setTitle("Date assigning issue");
        alertDialogBuilderDate
        .setMessage("Due date can not be equal or less then the Assign date")
        .setCancelable(false)
        .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
                }
            });
        alertDialogBuilderDate.show();
    }
    

    【讨论】:

    • mDateSetListener.before(mDateSetListener1) 所述,如果您想设置之后的日期,也可以使用mDateSetListener.after(mDateSetListener1)
    【解决方案3】:

    只需将您的日期字符串转换为日期对象:

     try{       
                    SimpleDateFormat curFormater = new SimpleDateFormat(dateFormat.getValue(),locale); 
                    Date d1 = curFormater.parse(dateStr); 
    Date d2 = curFormater.parse(dateStr2); 
    
    //Now just compare the two dates as
    
    if(d1.before(d2)){
    }
    else{
    }
                }catch (Exception e) {
                    LogHandler.error(tag, "getDataFormate", e);
                    return null;
                }
    

    如果有帮助,请告诉我。

    【讨论】:

      【解决方案4】:
          boolean compareTime(int startDay, int startMonth, int startYear,
              int monthDay, int month, int year) {
          Time timeNow = new Time();
          Time timeSelected = new Time();
      
          timeNow.set(startDay, startMonth, startYear);
      
          timeSelected.set(monthDay, month, year);
      
          long millisNow = timeNow.toMillis(true);
          long millisSelected = timeSelected.toMillis(true);
      
          long diff = millisSelected - millisNow;
          long diffHours = diff / (60 * 60 * 1000);
      
          Log.i(TAG, "diffHours = " + diffHours);
      
          if (diffHours <= 0) {
              return true;
          } else {
              return false;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-08
        • 1970-01-01
        • 2012-12-03
        • 1970-01-01
        • 2017-02-08
        • 1970-01-01
        • 2019-10-04
        相关资源
        最近更新 更多