我使用javaSE 1.6,我需要比较两个日期并检查它们是否相同。这项检查需要独立于年份。
例如,我需要确定今天是否是某人的B日,我需要在未来几年内重复使用此代码。 所以我需要进行检查,而不是在一年,甚至不是在一年中的日期(闰年问题),但我只能依靠月份和月份数字本身。我的输入数据,人的生日那天,它是在Java类“Date”
是否有任何javaSE 1.6方法可以帮助我?
我检查过课程“日期”和“日历”,但到目前为止我找不到任何提示来解决我的问题。
答案 0 :(得分:1)
public static MonthDay toMonthDay(Date utilDate) {
Instant inst = DateTimeUtils.toInstant(utilDate);
ZonedDateTime dateTime = inst.atZone(ZoneId.systemDefault());
return MonthDay.from(dateTime);
}
MonthDay
java.time
类ThreeTen-Backport是你需要的,它是没有年份的日期,或者相反,是一个月和一个月的日期。生日和其他需要记住的日子是其使用的主要例子。
像这样:
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");
}
在Java 6上,您需要使用Oracle tutorial: Date Time,java.time
的后端到Java 6和7。
我犹豫地使用ZoneId.systemDefault()
来使用JVM的时区设置进行转换。一方面Date
通常会假设这个时区;另一方面,这很脆弱,因为可以随时从程序的其他部分或在同一JVM中运行的其他程序更改设置。如果您更了解,请务必提供时区,例如ZoneId.of("America/Adak")
如果使用Java 8或更高版本以及内置java.time
,转换会更简单一些:
ZonedDateTime dateTime = utilDate.toInstant().atZone(ZoneId.systemDefault());
return MonthDay.from(dateTime);
java.time
。java.time
。java.time
向Java 6和7的后端(JST-310的ThreeTen)。答案 1 :(得分:0)
我找到了在课程日历中调用月份和月份日期的方法。
这是我的解决方案,我没有找到关于这个主题的任何其他例子,所以我会粘贴,也许可以在将来帮助某人。
如果您有更时尚的解决方案,请告诉我。 我很乐意学习:)
Sigma <- matrix(c(1.0, .71, .71, 1.0), 2, 2, byrow=TRUE)
m <- ordsample(N, marginal, Sigma)
> m
[,1] [,2]
[1,] 1 1
[2,] 1 2
....