37 lines
959 B
Plaintext
37 lines
959 B
Plaintext
The use of the ``++ZonedDateTime++`` class introduced in Java 8 to truncate a date can be significantly faster than the ``++DateUtils++`` class from Commons Lang.
|
|
|
|
|
|
*Note* that this rule is automatically disabled when the project's ``++sonar.java.source++`` is lower than ``++8++``.
|
|
|
|
|
|
== Noncompliant Code Example
|
|
|
|
----
|
|
public Date trunc(Date date) {
|
|
return DateUtils.truncate(date, Calendar.SECOND); // Noncompliant
|
|
}
|
|
----
|
|
|
|
|
|
== Compliant Solution
|
|
|
|
----
|
|
public Date trunc(Date date) {
|
|
Instant instant = date.toInstant();
|
|
ZonedDateTime zonedDateTime = instant.atZone(ZoneId.systemDefault());
|
|
ZonedDateTime truncatedZonedDateTime = zonedDateTime.truncatedTo(ChronoUnit.SECONDS);
|
|
Instant truncatedInstant = truncatedZonedDateTime.toInstant();
|
|
return Date.from(truncatedInstant);
|
|
}
|
|
----
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
include::message.adoc[]
|
|
|
|
endif::env-github,rspecator-view[]
|