我有 2 个日期变量,Date1 和 Date2。
我想检查日期 1 是否与日期 2 属于同一日期(但允许它们有不同的时间)。
我该怎么做呢?
这看起来是一件很容易做的事情,但我却很困难。
编辑:我想避免外部库和东西
编辑:
我最初的想法是删除小时、分钟、秒,但这些功能在 Java 中被标记为已弃用。那我应该用什么呢????
尽管给出的答案是基于日期组成部分java.util.Date
在很多方面都足够了,我想强调一点java.util.Date
is NOT日期,而是一种以毫秒为单位的 UNIX 时间戳。这样做的后果是什么?
仅日期比较Date
-时间戳将取决于上下文的时区。例如,在 UTC 时区中,仅日期比较是直接的,最终只会比较年、月和日部分,请参阅其他答案(我不需要重复)。
但考虑一下 2011 年西萨摩亚跨越国际日期变更线的例子。您可以拥有以下类型的有效时间戳java.util.Date
,但如果您考虑萨摩亚的日期部分,您甚至可能会得到无效日期(2011-12-30 在萨摩亚本地从未存在过),因此仅日期部分的比较可能会失败。此外,根据时区的不同,日期部分通常可能与 UTC 区域中的本地日期相差一天,无论是提前还是落后,在最坏的情况下甚至会有两天的差异。
因此,以下解决方案的扩展稍微更精确:
SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMdd");
fmt.setTimeZone(...); // your time zone
return fmt.format(date1).equals(fmt.format(date2));
类似的扩展也存在于更具编程性的方法中,首先将 j.u.Date-timestamp 转换为java.util.GregorianCalendar
,然后设置时区,然后比较日期组件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)