Index: trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java	(revision 17841)
+++ trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java	(revision 17842)
@@ -58,5 +58,4 @@
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.Date;
 import java.util.List;
 import java.util.NoSuchElementException;
@@ -350,8 +349,8 @@
      * @param showWithoutDate Include tracks that don't have any date set..
      */
-    public void filterTracksByDate(Date fromDate, Date toDate, boolean showWithoutDate) {
+    public void filterTracksByDate(Instant fromDate, Instant toDate, boolean showWithoutDate) {
         int i = 0;
-        long from = fromDate.getTime();
-        long to = toDate.getTime();
+        long from = fromDate.toEpochMilli();
+        long to = toDate.toEpochMilli();
         for (IGpxTrack trk : data.getTracks()) {
             Instant[] t = GpxData.getMinMaxTimeForTrack(trk);
Index: trunk/src/org/openstreetmap/josm/gui/layer/gpx/DateFilterPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/gpx/DateFilterPanel.java	(revision 17841)
+++ trunk/src/org/openstreetmap/josm/gui/layer/gpx/DateFilterPanel.java	(revision 17842)
@@ -10,5 +10,4 @@
 import java.time.ZoneId;
 import java.time.ZonedDateTime;
-import java.util.Date;
 
 import javax.swing.JCheckBox;
@@ -52,12 +51,12 @@
         this.layer = layer;
 
-        final Date startTime, endTime;
+        final Instant startTime, endTime;
         Instant[] bounds = layer.data.getMinMaxTimeForAllTracks();
         if (bounds.length == 0) {
-            startTime = Date.from(ZonedDateTime.of(2000, 1, 1, 0, 0, 0, 0, ZoneId.systemDefault()).toInstant());
-            endTime = new Date();
+            startTime = ZonedDateTime.of(2000, 1, 1, 0, 0, 0, 0, ZoneId.systemDefault()).toInstant();
+            endTime = Instant.now();
         } else {
-            startTime = Date.from(bounds[0]);
-            endTime = Date.from(bounds[1]);
+            startTime = bounds[0];
+            endTime = bounds[1];
         }
 
@@ -109,6 +108,6 @@
      */
     public void saveInPrefs() {
-        Config.getPref().putLong(prefDateMin, dateFrom.getDate().getTime());
-        Config.getPref().putLong(prefDateMax, dateTo.getDate().getTime());
+        Config.getPref().putLong(prefDateMin, dateFrom.getDate().toEpochMilli());
+        Config.getPref().putLong(prefDateMax, dateTo.getDate().toEpochMilli());
         Config.getPref().putBoolean(prefDate0, noTimestampCb.isSelected());
     }
@@ -120,7 +119,7 @@
     public void loadFromPrefs() {
         long t1 = Config.getPref().getLong(prefDateMin, 0);
-        if (t1 != 0) dateFrom.setDate(new Date(t1));
+        if (t1 != 0) dateFrom.setDate(Instant.ofEpochMilli(t1));
         long t2 = Config.getPref().getLong(prefDateMax, 0);
-        if (t2 != 0) dateTo.setDate(new Date(t2));
+        if (t2 != 0) dateTo.setDate(Instant.ofEpochMilli(t2));
         noTimestampCb.setSelected(Config.getPref().getBoolean(prefDate0, false));
     }
@@ -135,6 +134,6 @@
 
     private void filterTracksByDate() {
-        Date from = dateFrom.getDate();
-        Date to = dateTo.getDate();
+        Instant from = dateFrom.getDate();
+        Instant to = dateTo.getDate();
         layer.filterTracksByDate(from, to, noTimestampCb.isSelected());
     }
Index: trunk/src/org/openstreetmap/josm/gui/widgets/DateEditorWithSlider.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/DateEditorWithSlider.java	(revision 17841)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/DateEditorWithSlider.java	(revision 17842)
@@ -7,4 +7,5 @@
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
+import java.time.Instant;
 import java.util.ArrayList;
 import java.util.Date;
@@ -29,6 +30,6 @@
     private final JSpinner spinner;
     private final JSlider slider;
-    private Date dateMin;
-    private Date dateMax;
+    private Instant dateMin;
+    private Instant dateMax;
     private static final int MAX_SLIDER = 300;
     private boolean watchSlider = true;
@@ -76,16 +77,16 @@
         add(slider, GBC.eol().insets(10, 0, 0, 0).fill(GBC.HORIZONTAL));
 
-        dateMin = new Date(0);
-        dateMax = new Date();
+        dateMin = Instant.EPOCH;
+        dateMax = Instant.now();
     }
 
     protected Date dateFromInt(int value) {
         double k = 1.0*value/MAX_SLIDER;
-        return new Date((long) (dateMax.getTime()*k+ dateMin.getTime()*(1-k)));
+        return new Date((long) (dateMax.toEpochMilli()*k+ dateMin.toEpochMilli()*(1-k)));
     }
 
     protected int intFromDate(Date date) {
-        return (int) (300.0*(date.getTime()-dateMin.getTime()) /
-                (dateMax.getTime()-dateMin.getTime()));
+        return (int) (300.0*(date.getTime()-dateMin.getEpochSecond()) /
+                (dateMax.getEpochSecond()-dateMin.getEpochSecond()));
     }
 
@@ -95,7 +96,7 @@
      * @param dateMax The max date
      */
-    public void setRange(Date dateMin, Date dateMax) {
-        this.dateMin = DateUtils.cloneDate(dateMin);
-        this.dateMax = DateUtils.cloneDate(dateMax);
+    public void setRange(Instant dateMin, Instant dateMax) {
+        this.dateMin = dateMin;
+        this.dateMax = dateMax;
     }
 
@@ -104,6 +105,6 @@
      * @param date The date
      */
-    public void setDate(Date date) {
-        spinner.setValue(DateUtils.cloneDate(date));
+    public void setDate(Instant date) {
+        spinner.setValue(Date.from(date));
     }
 
@@ -112,6 +113,6 @@
      * @return The date
      */
-    public Date getDate() {
-        return DateUtils.cloneDate((Date) spinner.getValue());
+    public Instant getDate() {
+        return ((Date) spinner.getValue()).toInstant();
     }
 
