如何在特定日期后禁用按钮 [JAVA]

How to disable a button after a certain date [JAVA]

我想知道如何在 2015 年 7 月 4 日这样的日期之后禁用按钮? 我在该网站上找到了一个示例,说明如何在该日期禁用按钮,但在该日期之后的几天不禁用按钮。

来自示例:

Calendar today = Calendar.getInstance();
int dayOfMonth = today.get(Calendar.DAY_OF_MONTH);
int month = today.get(Calendar.MONTH);
int year = today.get(Calendar.YEAR);
if (month == Calendar.JUNE && dayOfMonth == 29 && year == 2014) {
  // June 29, 2014
  myButton.setEnabled(true);
}
else
{
  // NOT June 29, 2014
  myButton.setEnabled(false);
}

您可以通过以下几种方式检查自己的状况:

获取 Calendar 的实例并设置您规定的日期。

int dayOfMonth = 29;
int month = Calendar.JUNE;
int year = 2014;

Calendar disableDate = Calendar.getInstance();
disableDate.set(year, month, dayOfMonth);

然后:使用 before/after/equals

 //enable the button for dates after your prescribed date
 if(today.after(disableDate))

 //enable the button for dates before your prescribed date
 if(today.before(disableDate))

 //enable the button only on your prescribed date
 if(today.equals(disableDate))

注意:如果您要执行任何这些操作,您可能必须从日期实例中删除/归零时间,因为时间将被考虑在内。

检查日期是否相等:

public static boolean calendarCheck(Calendar calendar1, Calendar calendar2)
{
  return zeroCalendar(calendar1).compareTo(zeroCalendar(calendar2)) == 0;
}

归零时间

public static Calendar zeroCalendar(Calendar calendar)
{
   calendar.set(Calendar.HOUR, 0);
   calendar.set(Calendar.MINUTE, 0);    
   calendar.set(Calendar.SECOND, 0);
   calendar.set(Calendar.MILLISECOND, 0);
   return calendar;
 }

希望对您有所帮助。

避免 java.util.Date 和 .Calendar 类 与 Java 捆绑在一起。而是使用 Joda-Time 或 Java 8 或更高版本中的新 java.time 包(受 Joda-Time 启发)。

时区

时区对于确定日期至关重要。例如,新的一天在巴黎比在蒙特利尔早,后者仍然是 'yesterday'.

乔达时间

LocalDate dueDate = new LocalDate( 2015 , DateTimeConstants.JULY , 4 ) ;
DateTimeZone zone = DateTimeZone.forID( "America/Montréal" ) ;
LocalDate now = LocalDate.now( zone ) ;
Boolean disableButton = now.isAfter( dueDate ) ;