Index: trunk/src/org/openstreetmap/josm/data/gpx/GpxData.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/gpx/GpxData.java	(revision 17747)
+++ trunk/src/org/openstreetmap/josm/data/gpx/GpxData.java	(revision 17748)
@@ -296,5 +296,5 @@
             Instant at = a.getInstant();
             Instant bt = b.getInstant();
-            inv = bt.isBefore(at);
+            inv = at != null && bt != null && bt.isBefore(at);
             if (inv) {
                 firstWp = b;
Index: trunk/src/org/openstreetmap/josm/io/GpxReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/GpxReader.java	(revision 17747)
+++ trunk/src/org/openstreetmap/josm/io/GpxReader.java	(revision 17748)
@@ -477,5 +477,5 @@
                 case PT_TIME:
                     try {
-                        currentWayPoint.setTimeInMillis(DateUtils.tsFromString(accumulator.toString()));
+                        currentWayPoint.setInstant(DateUtils.parseInstant(accumulator.toString()));
                     } catch (UncheckedParseException | DateTimeException e) {
                         Logging.error(e);
