== Why is this an issue?

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

[source,java]
----
public Date trunc(Date date) {
  return DateUtils.truncate(date, Calendar.SECOND);  // Noncompliant 
}
----


=== Compliant solution

[source,java]
----
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)

=== Message

Use "ZonedDateTime.truncatedTo" instead. [(sonar.java.source not set. Assuming 8 or greater.)]


endif::env-github,rspecator-view[]
