Java 检查日期是否与年份无关
我使用JavaSE1.6,我需要比较两个日期并检查它们是否相同。此支票需要独立于年度 例如,我需要确定今天是否是某人的生日,并且我需要在未来几年中重用这些代码。 因此,我需要执行检查,而不是在年份上,甚至不是在闰年发布的一年中的哪一天,但我只能依靠月份的哪一天和月份编号本身 我输入的数据,是人的生日,它是在Java类中的日期 javaSE 1.6有什么方法可以帮助我吗Java 检查日期是否与年份无关,java,date,calendar,java-6,date-comparison,Java,Date,Calendar,Java 6,Date Comparison,我使用JavaSE1.6,我需要比较两个日期并检查它们是否相同。此支票需要独立于年度 例如,我需要确定今天是否是某人的生日,并且我需要在未来几年中重用这些代码。 因此,我需要执行检查,而不是在年份上,甚至不是在闰年发布的一年中的哪一天,但我只能依靠月份的哪一天和月份编号本身 我输入的数据,是人的生日,它是在Java类中的日期 javaSE 1.6有什么方法可以帮助我吗 我检查了课程日期和日历,但到目前为止我找不到任何提示来解决我的问题。我找到了在课程日历中调用月份和日期的方法 这是我的解决方案,
我检查了课程日期和日历,但到目前为止我找不到任何提示来解决我的问题。我找到了在课程日历中调用月份和日期的方法 这是我的解决方案,我没有找到关于这个主题的任何其他示例,所以我将粘贴,也许将来可以帮助别人 如果您有更时尚的解决方案,请告诉我。 我很高兴知道:
// date of the B-day 31st December
int month = Calendar.DECEMBER;
int date = 31;
boolean status = false;
// Class Date already filled with the date we wanna check.
Date beginDate;
Calendar c = Calendar.getInstance();
c.setTime(beginDate);
int dayOfMonthToCompare = c.get(Calendar.DAY_OF_MONTH);
int monthToCompare = c.get(Calendar.MONTH);
//perform check on day and Month
if(dayOfMonthToCompare == date && monthToCompare == month){
status = true;
}
三百一十个后场
类是你需要的,它是一个没有年份的日期,或者相反,是一个月和一个月中的一天。生日和其他需要记住的日子是它使用的主要例子
像这样:
Date birthday = // ...
Date today = new Date();
if (toMonthDay(today).equals(toMonthDay(birthday))) {
System.out.println("It’s her birthday");
} else {
System.out.println("It’s not her birthday");
}
在Java6上,您需要使用Java.time的后端口,即Java6和Java7的后端口
我正在犹豫使用ZoneId.systemDefault来使用JVM的时区设置进行转换。一方面,日期通常假定为这个时区;另一方面,这是脆弱的,因为可以随时从程序的其他部分或运行在同一JVM中的其他程序更改设置。如果您知道得更清楚,请务必给出一个时区,例如ZoneId.ofAmerica/Adak
如果使用Java 8或更高版本以及内置的Java.time,转换会稍微简单一些:
ZonedDateTime dateTime = utilDate.toInstant().atZone(ZoneId.systemDefault());
return MonthDay.from(dateTime);
链接
解释如何使用java.time。
,其中首次描述了java.time。
,java.timeto JSR-310的java 6和7 Three-Ten的后端口。
,Android版Three Ten Backport
,解释得非常透彻。
日历上没有任何东西可以帮助您确定月份和月份的哪一天?谢谢您的提示,我以前没有找到它,我正在寻找一种专门的方法。感谢您的帮助。仅供参考,像、和java.text.simpleDataFormat这样麻烦的旧日期时间类现在被java 8和更高版本中内置的类所取代。请参见.FYI,像、和java.text.simpleDataFormat这样的麻烦的旧日期时间类现在被内置在Java8和更高版本中的类所取代。看见
ZonedDateTime dateTime = utilDate.toInstant().atZone(ZoneId.systemDefault());
return MonthDay.from(dateTime);