如何比较当前日和给定日期和月份的月份在java中的一个月

时间:2016-08-30 09:44:49

标签: java android date

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

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();
                    }
    

4 个答案:

答案 0 :(得分:1)

java.time.MonthDay

ThreeTenABP项目中使用现代日期时间类,这是Java 8及更高版本中内置的the back-portjava-time的Android改编版。避免使用麻烦的旧遗留日期时间类。

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

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

此类已实现Comparable接口及其compareTo方法。还实现了方法equalsisBeforeisAfter。所以,完成了工作。

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

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

关于java.time

java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendar和& SimpleDateFormat

现在位于Joda-Timemaintenance mode项目建议迁移到java.time类。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310

从哪里获取java.time类?

答案 1 :(得分:0)

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

只需使用日历,将年份设置为在两个Date对象中相同,然后比较它们......

(照顾闰年)

答案 2 :(得分: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!");
    }
}

答案 3 :(得分: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;
}