diff --git a/core-java/README.md b/core-java/README.md
index dabf6f39be..a4b5127e98 100644
--- a/core-java/README.md
+++ b/core-java/README.md
@@ -141,3 +141,6 @@
- [Guide to UUID in Java](http://www.baeldung.com/java-uuid)
- [How to Get the Last Element of a Stream in Java?](http://www.baeldung.com/java-stream-last-element)
- [Guide to Escaping Characters in Java RegExps](http://www.baeldung.com/java-regexp-escape-char)
+- [Period and Duration in Java](http://www.baeldung.com/java-period-duration)
+- [Introduction to the Java 8 Date/Time API](http://www.baeldung.com/java-8-date-time-intro)
+- [Migrating to the New Java 8 Date Time API](http://www.baeldung.com/migrating-to-java-8-date-time-api)
diff --git a/core-java/pom.xml b/core-java/pom.xml
index 422965a0ed..586486027a 100644
--- a/core-java/pom.xml
+++ b/core-java/pom.xml
@@ -186,6 +186,16 @@
fscontext
${fscontext.version}
+
+ joda-time
+ joda-time
+ ${joda-time.version}
+
+
+ com.darwinsys
+ hirondelle-date4j
+ ${hirondelle-date4j.version}
+
@@ -408,6 +418,8 @@
1.8.7
1.16.12
4.6-b01
+ 2.9.9
+ 1.5.1
1.3
@@ -416,9 +428,9 @@
3.6.1
1.7.0
+
3.6.0
2.19.1
-
diff --git a/core-java/src/test/java/com/baeldung/DateDiffUnitTest.java b/core-java/src/test/java/com/baeldung/DateDiffUnitTest.java
new file mode 100644
index 0000000000..40b7fac30d
--- /dev/null
+++ b/core-java/src/test/java/com/baeldung/DateDiffUnitTest.java
@@ -0,0 +1,63 @@
+package com.baeldung;
+
+import org.joda.time.DateTime;
+import org.junit.Test;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.Duration;
+import java.time.ZonedDateTime;
+import java.util.Date;
+import java.util.Locale;
+import java.util.TimeZone;
+import java.util.concurrent.TimeUnit;
+
+import static org.junit.Assert.assertEquals;
+
+public class DateDiffUnitTest {
+
+ @Test
+ public void givenTwoDatesBeforeJava8_whenDifferentiating_thenWeGetSix() throws ParseException {
+ SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy", Locale.ENGLISH);
+ Date firstDate = sdf.parse("06/24/2017");
+ Date secondDate = sdf.parse("06/30/2017");
+
+ long diffInMillies = Math.abs(secondDate.getTime() - firstDate.getTime());
+ long diff = TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS);
+
+ assertEquals(diff, 6);
+ }
+
+ @Test
+ public void givenTwoDatesInJava8_whenDifferentiating_thenWeGetSix() {
+ ZonedDateTime now = ZonedDateTime.now();
+ ZonedDateTime sixDaysBehind = now.minusDays(6);
+
+ Duration duration = Duration.between(now, sixDaysBehind);
+ long diff = Math.abs(duration.toDays());
+
+ assertEquals(diff, 6);
+ }
+
+ @Test
+ public void givenTwoDatesInJodaTime_whenDifferentiating_thenWeGetSix() {
+ DateTime now = DateTime.now();
+ DateTime sixDaysBehind = now.minusDays(6);
+
+ org.joda.time.Duration duration = new org.joda.time.Duration(now, sixDaysBehind);
+ long diff = Math.abs(duration.getStandardDays());
+
+ assertEquals(diff, 6);
+ }
+
+ @Test
+ public void givenTwoDatesInDate4j_whenDifferentiating_thenWeGetSix() {
+ hirondelle.date4j.DateTime now = hirondelle.date4j.DateTime.now(TimeZone.getDefault());
+ hirondelle.date4j.DateTime sixDaysBehind = now.minusDays(6);
+
+ long diff = Math.abs(now.numDaysFrom(sixDaysBehind));
+
+ assertEquals(diff, 6);
+ }
+
+}
\ No newline at end of file
diff --git a/java-difference-date/src/main/java/com/baeldung/DateDiff.java b/java-difference-date/src/main/java/com/baeldung/DateDiff.java
deleted file mode 100644
index 08fc02fab7..0000000000
--- a/java-difference-date/src/main/java/com/baeldung/DateDiff.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.baeldung;
-
-import org.joda.time.DateTime;
-
-import java.time.Duration;
-import java.time.ZonedDateTime;
-import java.util.Date;
-import java.util.concurrent.TimeUnit;
-
-public class DateDiff {
- public long beforeJava8diff(Date firstDate, Date secondDate){
- long diffInMillies = Math.abs(secondDate.getTime() - firstDate.getTime());
- return TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS);
- }
-
- public long fromJava8Diff(ZonedDateTime firstDate, ZonedDateTime secondDate){
- Duration duration = Duration.between(firstDate, secondDate);
- return Math.abs(duration.toDays());
- }
-
- public long fromJodaTime(DateTime firstDate, DateTime secondDate){
- org.joda.time.Duration duration = new org.joda.time.Duration(firstDate, secondDate);
- return Math.abs(duration.getStandardDays());
- }
-
- public long fromDate4j(hirondelle.date4j.DateTime firstDate, hirondelle.date4j.DateTime secondDate){
- long diff = firstDate.numDaysFrom(secondDate);
- return Math.abs(diff);
- }
-}
\ No newline at end of file
diff --git a/java-difference-date/src/test/java/com/baeldung/DateDiffTest.java b/java-difference-date/src/test/java/com/baeldung/DateDiffTest.java
index fe2b507cf3..4203f7ef38 100644
--- a/java-difference-date/src/test/java/com/baeldung/DateDiffTest.java
+++ b/java-difference-date/src/test/java/com/baeldung/DateDiffTest.java
@@ -5,55 +5,56 @@ import org.junit.Test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
+import java.time.Duration;
import java.time.ZonedDateTime;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
+import java.util.concurrent.TimeUnit;
import static org.junit.Assert.assertEquals;
public class DateDiffTest {
@Test
- public void givenTwoDatesBeforeJava8SeparatedBySixDays_whenCallingDiffOnThem_thenWeGetSix() throws ParseException {
+ public void givenTwoDatesBeforeJava8_whenDifferentiating_thenWeGetSix() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy", Locale.ENGLISH);
Date firstDate = sdf.parse("06/24/2017");
Date secondDate = sdf.parse("06/30/2017");
- DateDiff dateDiff = new DateDiff();
- long diff = dateDiff.beforeJava8diff(firstDate, secondDate);
+ long diffInMillies = Math.abs(secondDate.getTime() - firstDate.getTime());
+ long diff = TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS);
assertEquals(diff, 6);
}
@Test
- public void givenTheCurrentDateAndSixDaysBehindInJava8_whenCallingDiffOnThem_thenWeGetSix() {
+ public void givenTwoDatesInJava8_whenDifferentiating_thenWeGetSix() {
ZonedDateTime now = ZonedDateTime.now();
ZonedDateTime sixDaysBehind = now.minusDays(6);
- DateDiff dateDiff = new DateDiff();
- long diff = dateDiff.fromJava8Diff(now, sixDaysBehind);
+ Duration duration = Duration.between(now, sixDaysBehind);
+ long diff = Math.abs(duration.toDays());
assertEquals(diff, 6);
}
@Test
- public void givenTheCurrentDateAndSixDaysBehindInJodaTime_whenCallingDiffOnThem_thenWeGetSix() {
+ public void givenTwoDatesInJodaTime_whenDifferentiating_thenWeGetSix() {
DateTime now = DateTime.now();
DateTime sixDaysBehind = now.minusDays(6);
- DateDiff dateDiff = new DateDiff();
- long diff = dateDiff.fromJodaTime(now, sixDaysBehind);
+ org.joda.time.Duration duration = new org.joda.time.Duration(now, sixDaysBehind);
+ long diff = Math.abs(duration.getStandardDays());
assertEquals(diff, 6);
}
@Test
- public void givenTheCurrentDateAndSixDaysBehindInDate4j_whenCallingDiffOnThem_thenWeGetSix() {
+ public void givenTwoDatesInDate4j_whenDifferentiating_thenWeGetSix() {
hirondelle.date4j.DateTime now = hirondelle.date4j.DateTime.now(TimeZone.getDefault());
hirondelle.date4j.DateTime sixDaysBehind = now.minusDays(6);
- DateDiff dateDiff = new DateDiff();
- long diff = dateDiff.fromDate4j(now, sixDaysBehind);
+ long diff = Math.abs(now.numDaysFrom(sixDaysBehind));
assertEquals(diff, 6);
}
diff --git a/pom.xml b/pom.xml
index 40e7fda4a3..b5dee350ca 100644
--- a/pom.xml
+++ b/pom.xml
@@ -76,7 +76,6 @@
immutables
jackson
- java-difference-date
vavr
javax-servlets