2016-08-30 98 views
2

我想比较当前日期和给定日期。当前日期格式为(dd-MM-YYYY)。我不想要今年。假设今天的日期是30-08-2016。我只想得到30-08,我不想要现在的2016年。给定的日期是15-08和31-08。我没有得到像这个30-08这样的当前日期。我怎样才能得到这个,我怎么能比较?这里是我的代码,我曾尝试:如何比较当前日期和月份与java中的给定日期和月份

Date date1_aug, date2_aug, cur_date; 

String cur_date_string, sDay, sMonth; 

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


Calendar calendar = Calendar.getInstance(); 
int year = calendar.get(Calendar.YEAR); 
int month = calendar.get(Calendar.MONTH)+1; 
int day = calendar.get(Calendar.DATE); 

sDay = Integer.toString(day); 
sMonth = Integer.toString(month); 

cur_date_string = sDay+"-"+sMonth; 

      try { 
       cur_date = sdf.parse(cur_date_string); 
      } catch (java.text.ParseException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
  1. 另一个功能:

     try{ 
            date1_aug = sdf.parse("15-08"); 
            date2_aug = sdf.parse("31-08"); 
    
            if(cur_date.equals(date1_aug) || cur_date.after(date1_aug) || cur_date.before(date2_aug)){ 
             textView_Amount_LateFee.setText(Config.fine_aug.get(1)); 
            } 
    
    
           }catch(ParseException ex){ 
            ex.printStackTrace(); 
           } 
    
+2

'DD-MM'不是一个完整的日期 – Jens

+1

如果你想比较DD-MM的值(请忽略日期的概念,因为它不是一个完整的日期),你可以比较的MM价值,然后dd值。 –

+0

谢谢你。通过忽略日期概念解决。 – tanzilamohita

回答

0

您是否尝试过使用同年要比较的日期?

刚开始使用日历,设置年份是在两个Date对象相同,之后对它们进行比较......

如果你想忽略(照顾同跃年)

0

那一年,忘记使用日期概念本身。

String given_date = "15-08"; 

String[] tokens = given_date.split("-"); 

int given_day = Integer.parseInt(tokens[0]); 
int given_month = Integer.parseInt(tokens[1]); 

Calendar c = Calendar.getInstance(); 

int now_month = c.get(Calendar.MONTH) + 1; 
int now_day = c.get(Calendar.DATE); 

System.out.println(given_day + " " + given_month + " " + now_day + " " + now_month); 

if (now_month > given_month) { 
    System.out.println("Before Today!"); 
} else if (now_month < given_month) { 
    System.out.println("After Today!"); 
} else { 
    if (now_day > given_day) { 
     System.out.println("Before Today!"); 
    } else if (now_day < given_day) { 
     System.out.println("After Today!"); 
    } else { 
     System.out.println("Today!"); 
    } 
} 
+0

谢谢。它的工作:) – tanzilamohita

0
function to check dob(with current date) 
/** dob should be in the format yyyy-MM-dd hh:mm:ss */ 
public static boolean isTodayBdy(String dob) { 
    Date today = new Date(); 
    try { 
     if(dob.length() > 1){ 
      Date dobDate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(dob); 
      if ((today.getMonth() == dobDate.getMonth()) && (today.getDate() == dobDate.getDate())) { 
       return true; 
      } 
     } 
    } catch (ParseException e) { 
     return false; 
    } 
    return false; 
} 
1

java.time.MonthDay

运用现代日期时间类的ThreeTenABP项目,内置到Java 8以及后来的java-timethe back-port一个Android适应。避免麻烦的旧的遗留日期时间课程。

这些java.time类包括MonthDay类来表示一个月和一个月没有一年的日期。

MonthDay md = MonthDay.of(8 , 15); 

这个类已经实现了Comparable接口及其compareTo方法。还实施方法equals,isBeforeisAfter。所以,工作完成了。

确定current MonthDay需要一个时区。对于任何特定时刻,日期变化为time zone

ZoneId z = ZoneId.of("America/Montreal"); 
MonthDay today = MonthDay.now(z); 

关于java.time

java.time框架是建立在Java 8和更高版本。这些类取代了日期时间类legacy,如java.util.Date,Calendar,& SimpleDateFormat

Joda-Time项目现在位于maintenance mode,建议迁移到java.time类。请参阅Oracle Tutorial。并搜索堆栈溢出了很多例子和解释。规格是JSR 310

从何处获取java.time类?

+0

谢谢。之前不知道。 – tanzilamohita

相关问题