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.
}
}