【问题标题】:Compare Two String Date and Time in android?比较android中的两个字符串日期和时间?
【发布时间】:2013-09-14 03:39:57
【问题描述】:

我有两个字符串日期时间如下:

String Date1 = "05-09-2013 10:46:10"
String Date2 = "06-09-2013 10:46:10"

我需要比较这些日期时间并需要结果。

【问题讨论】:

  • 您好,如果它解决了您的问题,您能否将答案标记为已接受?

标签: android android-date


【解决方案1】:
try{

     SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");


     String str1 = "12/10/2013";
     Date date1 = formatter.parse(str1);

     String str2 = "13/10/2013";
     Date date2 = formatter.parse(str2);

     if (date1.compareTo(date2)<0)
      {
         System.out.println("date2 is Greater than my date1");                         
      }

    }catch (ParseException e1){
        e1.printStackTrace();
    }

【讨论】:

    【解决方案2】:

    您可以使用以下内容:

        public static boolean CheckDates(String startDate, String endDate) {
    
        SimpleDateFormat dfDate = new SimpleDateFormat("dd-MMM-yyyy");
    
        boolean b = false;
    
        try {
            if (dfDate.parse(startDate).before(dfDate.parse(endDate))) {
                b = true;  // If start date is before end date.
            } else if (dfDate.parse(startDate).equals(dfDate.parse(endDate))) {
                b = true;  // If two dates are equal.
            } else {
                b = false; // If start date is after the end date.
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
    
        return b;
    }
    

    【讨论】:

      【解决方案3】:
      String pattern = "dd-MM-yyyy HH:mm:ss";
      SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
      Date one = dateFormat.parse(Date1String);
      Date two = dateFormat.parse(Date2String);
      

      现在你有两个Date 对象,你可以比较它们。

      【讨论】:

      • String pattern = "dd-MM-yyyy "; SimpleDateFormat dateFormat = new SimpleDateFormat(pattern); try { Date one = dateFormat.parse("2018-04-11"); Date two = dateFormat.parse("2018-04-10"); Log.e(" Date 1 - Date 2", "" + one.compareTo(two)); } catch (ParseException e) { e.printStackTrace(); } in one.compareTo(two) 如果两个日期相同,则如果一个日期大于 1,它将返回 0,在其他情况下返回 -1。 @UmarAta
      • 您能否在答案中添加您的评论以使其完全可以理解
      【解决方案4】:

      您可以像这样将字符串转换为日期:

          String str = "12/12/1912";
         SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
         Date date = formatter.parse(str);
      

      然后回到字符串

          SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
         System.out.println("Date is : " + formatter.format(date));
      

      Date 有 before 和 after 方法,可以相互比较。

      对了还有一个叫Joda的库,你也可以去看看。

      【讨论】:

        【解决方案5】:

        尝试Joda time 以获得最佳结果。使用起来非常简单。

        【讨论】:

          【解决方案6】:
          public static String CompareDates(String date1, String date2) {
          try{
          String pattern = "dd-MMM-yyyy HH:mm:ss";
          SimpleDateFormat formatter = new SimpleDateFormat(pattern);
          Date Date1 = formatter.parse(date1);
          Date Date2 = formatter.parse(date2);
          if (Date1 != null && Date2 != null) {
          if (Date1 .equals(Date2 ))
          { 
          //Both dates are equal.
          } 
          else{
          //both date are not equal("use after and before to check occurrence of dates")
          }
          }catch (Exception e1){
          e1.printStackTrace();
          }
          }
          

          【讨论】:

            【解决方案7】:

            当我们比较两个字符串格式的日期时,这个 sn-p 解释,换句话说,当大于 from date 时,不允许 to date。

             private void setTodate() {
                        // TODO Auto-generated method stub
                        // Process to get Current Date
                        int fYear, fMonth, fDay;
                        final Calendar c = Calendar.getInstance();
                        fYear = c.get(Calendar.YEAR);
                        fMonth = c.get(Calendar.MONTH);
                        fDay = c.get(Calendar.DAY_OF_MONTH);
                        // Launch Date Picker Dialog
                        DatePickerDialog dpd = new DatePickerDialog(RemindMeDetails.this,
                                new DatePickerDialog.OnDateSetListener() {
                                    @SuppressLint("SimpleDateFormat")
                                    @Override
                                    public void onDateSet(DatePicker view, int year,
                                            int monthOfYear, int dayOfMonth) {                  
                                    try{                        
                                        SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");        
                                        String fdate=recr_edit_Fromdate.getText().toString();                       
                                        Date dateFD = formatter.parse(fdate);                       
                                        String tdate=(dayOfMonth + "-"
                                                + (monthOfYear + 1) + "-" + year).toString();
                                        Date dateTD = formatter.parse(tdate);                       
                                        if (dateFD.compareTo(dateTD)<=0)
                                          {
                                            /* System.out.println("tdate is Greater than my fdate");  
                                             recr_edit_Todate.setText(dayOfMonth + "-"
                                                        + (monthOfYear + 1) + "-" + year);*/
                                            recr_edit_Todate.setText(tdate);
                                          }
                                        else{
                                            showmessage("Alert", "Start date is not greater than End date");                            
                                    }catch (ParseException e1){
                                        e1.printStackTrace();
                                    }   
                                    }
                                }, fYear, fMonth, fDay);
                        dpd.show();
                    }// method closed
            

            【讨论】:

              【解决方案8】:
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                          Date date1 = sdf.parse("2010-02-22");
                          Date date2 = sdf.parse("2010-03-23");
                          int i = date1.compareTo(date2);
                          switch (i){
                              case -1: //date1<date2 = -1
                                  return sDate2;
                              case 1: //date1>date2 = 1
                                  return sDate1;
                              case 0: //date1==date2= 0
                              default:
                                  return sDate2;
                          }
                      } catch (ParseException e) {
                          return sDate1;
                      }
              

              【讨论】:

                【解决方案9】:

                简单代码

                fun CompareDates(str_date1:String,str_date2:String):Int {
                    lateinit var date1:Date
                    lateinit var date2:Date
                
                    if (!str_date1.isEmpty()&&!str_date2.isEmpty()) {
                        val formatter = SimpleDateFormat("dd/MM/yyyy")
                        date1 = formatter.parse(str_date1)
                        date2 = formatter.parse(str_date2)
                    }
                
                    return date1.compareTo(date2)
                }
                

                Int 返回类型

                if (CompareDates() > 0) {
                 // comes when date1 is higher then date2
                } else {
                 // comes when date2 is higher then date1
                }
                

                【讨论】:

                  【解决方案10】:

                  试试这个,

                  String pattern = "<yourPattern>";
                  SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
                  try {
                   Date one = dateFormat.parse(<yourDate>);
                   Date two = dateFormat.parse(<yourDate>);
                  
                  }
                  catch (ParseException e) {}
                  

                  【讨论】:

                    猜你喜欢
                    • 2019-07-25
                    • 1970-01-01
                    • 2020-06-10
                    • 1970-01-01
                    • 2013-10-31
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多