Java 在不考虑年份的情况下,如何将任何日期与当前日期进行比较

Java 在不考虑年份的情况下,如何将任何日期与当前日期进行比较,java,android,date,date-comparison,Java,Android,Date,Date Comparison,我想将日期与当前日期进行比较,而不考虑年份,并且我想更改每天的文本 这是我的密码 TextView textView = (TextView)findViewById(R.id.textView); String valid_until = "7/3"; String valid_until1 = "8/3"; String valid_until2 = "9/3"; String valid_until3 = "10/3";

我想将日期与当前日期进行比较,而不考虑年份,并且我想更改每天的文本

这是我的密码

TextView textView = (TextView)findViewById(R.id.textView);

        String valid_until = "7/3";
        String valid_until1 = "8/3";
        String valid_until2 = "9/3";
        String valid_until3 = "10/3";

        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM");
        Date strDate = null;
        Date strDate1 = null;
        Date strDate2 = null;
        Date strDate3 = null;


        try {
            strDate = sdf.parse(valid_until);
            strDate1 = sdf.parse(valid_until1);
            strDate2 = sdf.parse(valid_until2);
            strDate3 = sdf.parse(valid_until3);


        } catch (ParseException e) {
            e.printStackTrace();
        }
        if (new Date() == (strDate)) {
            textView.setText("7 m");
        }
        if (new Date() == (strDate1)) {
            textView.setText("8 m");
        }
        if (new Date() == (strDate2)) {
            textView.setText("9 m");
        }
        if (new Date() == (strDate3)) {
            textView.setText("10 m");
        }
tl;博士 细节 有关详细信息,请参见关于重复问题的。这里简要回顾一下

避免像瘟疫一样麻烦的旧遗留类Date&SimpleDateFormat。它们已被java.time类取代。在ThreeTenABP项目中,大部分java.time都被移植到了Android上

不要重复捕获当前日期。如果您的代码在午夜运行,那么随着日期的更改,您将得到不一致的结果

该类与LocalDate和ZoneId一起解决您的问题

为了解决您的特定问题,我将创建一个枚举对象和循环的集合。搜索堆栈溢出以获取有关的更多信息

要生成字符串,请调用MonthDay::format并传递一个对象。搜索Stack Overflow以获取有关DateTimeFormatter的更多信息,包括数百个问题和答案

在不考虑年份的情况下,如何将任何日期与当前日期进行比较

一个选项是,您可以使用日历对象。设置每个日期,然后简单地比较“年中的天”值


重复:[如何将当前日期和月份与java中的给定日期和月份进行比较]亲爱的Down投票者,请在投票时留下批评意见。你能给我举一个将几天与当前日期进行比较的示例吗。。。这样我就可以打印出每天的文本了?我需要该程序显示一年中每天的日出和日落时间…@ММааааааааааааааааа1072。请看枚举集代码。一年中的每一天都是一个不同的问题,这个问题已经在关于堆栈溢出的其他问题中得到了提问和回答。请参阅类及其atDay和length方法。
MonthDay.now( ZoneId.of( "America/Montreal" ) )
        .equals( MonthDay.of( Month.JULY , 3 ) )
ZoneId z = ZoneId.of( "America/Montreal" );  // Zone in which you want the current date.
LocalDate today = LocalDate.now( z ); // Current date for your zone.
MonthDay mdCurrent = MonthDay.of( today );
MonthDay mdJulyThird = MonthDay.of( Month.JULY , 3 );
if( mdCurrent.equals( mdJulyThird) ) { … }
EnumSet<Month> months = EnumSet.range( Month.JULY , Month.OCTOBER );
for ( Month month : months ) {
    MonthDay md = MonthDay.of( month , 3 ) ; 
    if( md.equals( mdCurrent ) { 
        … 
        break; // Break out of the 'for' loop. No need to continue looping.
    }
}