我有两个字符串格式的日期:说字符串日期1 = 2018-08-29
,ISO-OFFSET_DATE_TIME
格式为字符串日期2 = 2018-08-30T00:00:00 10:00
。比较日期1和日期2的相等性的最佳方法是什么?我不关心时间,只关心日、年、月。我应该将它们转换为即时并进行比较吗?
如果这是关于这两个字符串的唯一信息:
LocalDate ld1 = LocalDate.parse(date1);
LocalDate ld2 = LocalDate.parse(date2, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
if (ld1.isEqual(ld2)) {
System.out.println("They are the same date");
} else {
System.out.println("They are different dates");
}
使用问题中的字符串示例输出:
它们是不同的日期
我只是在写类似于巴西尔·布尔克的代码,当他的答案出现时。我更喜欢通过正确的日期时间对象来处理日期和时间,这正是他正在做的事情。通过将日期 2
解析为偏移日期时间,
您可以保留所有信息,并且很容易转换为本地日期
进行比较。在大多数情况下,我建议这样做。
只有当你确定你永远不需要一天中的时间时,你才可以走捷径。你当然可以使用王俊杰的快速方式。不过,我更喜欢上面我自己的代码,原因有两个:我清楚地告诉读者字符串是日期和时间,并且正确地处理它们。因此,它还提供了字符串格式的验证。如果有一天你偶然得到一个完全不同的字符串,你会通过DateTimeParseException
得到通知。
最快的方法是;
String date1 = "2018-08-29";
String date2 = "2018-08-30T00:00:00+10:00";
boolean isEqual = date2.startsWith(date1);
LocalDate
.parse( "2018-08-29" )
.isEqual(
OffsetDateTime
.parse( "2018-08-30T00:00:00+10:00" )
.toLocalDate()
)
假
在java.time中以适当的类型解析每个输入。
LocalDate ld = LocalDate.parse( "2018-08-29" ) ;
OffsetDateTime odt = OffsetDateTime.parse( "2018-08-30T00:00:00+10:00" ) ;
通过从< code>OffsetDateTime中提取一个< code>LocalDate进行比较。
Boolean sameDate = ld.isEqual( odt.toLocalDate() ) ;
假
或者您可能想将OffsetDateTime
从UTC前十小时的偏移量调整到另一个偏移量或时区。例如,在提取要比较的日期之前,让我们调整回UTC。
LocalDate
.parse( "2018-08-29" )
.isEqual(
OffsetDateTime
.parse( "2018-08-30T00:00:00+10:00" )
.withOffsetSameInstant( ZoneOffset.UTC )
.toLocalDate()
)
这将我们的结果从上面的代码中看到的false
更改为true
。
真
问题内容: 我有一个SQL查询中,我会路过,但是SQL查询需要。 如何启用此查询以根据正确的格式获取并显示正确的结果?在SQL Server 2008中实现此目标的最佳方法是什么? 这项工作正确地: 问题答案: 对于查询,我将使用格式的日期。关于输出,请参见kalyan的答案。 编辑: 总结如下(感谢marc_s)的意见,有必要使用的格式时不包括部分时间 ,除非 您使用的是新的日期类型,并在SQL
我想问的是,是否有一种首选的方法来根据显示格式比较两个日期对象?我可以实现这个逻辑,我只是好奇是否已经存在一些实现。 更新 我有两个日期对象: null
有没有办法将ISO8601日期与Java进行比较?比如,知道字符串日期是否是良好的格式,知道月份是否为负数,以及 我还在搜索如何知道互联网上是否有课程可以比较两个ISO8601日期?比如,如果我有:2000-12-12和1999-05-06。我如何比较这两个日期,使之在年、月和日之间有准确的差异?
所以今年早些时候,我在大学里接到了一个任务。任务是使用OOP程序创建一个停车场管理系统。例如,我们学习了如何使用继承、抽象类和实例。我已经完成了并通过了这个作业,所以这个问题只是为了知识目的。其中一个任务是按时间顺序对对象的 Array 列表进行排序。为此,我们学习了可比/比较器方法。但是,我无法理解它,也无法做到这一点。问题是,我们必须对数组列表中的“Vehicle”对象中的“DateTime”
我有以下几点: 上面的代码不起作用。以上问题还有其他解决方案吗? 格式化日期按我在哪里可以找到留档格式化日期在JavaScript?也dint为我工作。
目前,我正努力争取与之相比的约会。更重要的是,我有一个属性Death的人,格式是YYYY-MM-DD,如果这个人已经死了(Death 我尝试了以下做法: 但我只收到来自浏览器的解析错误。我使用的是XSL1.0版,除了xmlns:XSL=“http://www.w3.org/1999/XSL/transform”之外,没有任何名称空间。