Index: trunk/nodist/data/rtklib_example3.pos
===================================================================
--- trunk/nodist/data/rtklib_example3.pos	(revision 17987)
+++ trunk/nodist/data/rtklib_example3.pos	(revision 17987)
@@ -0,0 +1,4 @@
+% program   : ubx_convert.py 0.2
+% (lat/lon/height=WGS84/ellipsoidal,Q=1:fix,2:float,3:sbas,4:dgps,5:single,6:ppp,ns=# of satellites)
+%  DateTime                  latitude(deg) longitude(deg)  height(m)   Q  ns   sdn(m)   sde(m)   sdu(m)  sdne(m)  sdeu(m)  sdun(m) age(s)  ratio
+2021/03/30 15:04:01.000250   47.202295219   -1.571645403    56.1671   1  27   0.0141   0.0141   0.0157   0.0000   0.0000   0.0000 0.00    0.0 
Index: trunk/src/org/openstreetmap/josm/tools/date/DateUtils.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/date/DateUtils.java	(revision 17986)
+++ trunk/src/org/openstreetmap/josm/tools/date/DateUtils.java	(revision 17987)
@@ -136,4 +136,15 @@
             }
             return local.toInstant();
+        } else if (checkLayout(str, "xxxx/xx/xx xx:xx:xx.xxxxxx")) {
+            return ZonedDateTime.of(
+                parsePart4(str, 0),
+                parsePart2(str, 5),
+                parsePart2(str, 8),
+                parsePart2(str, 11),
+                parsePart2(str, 14),
+                parsePart2(str, 17),
+                parsePart6(str, 20) * 1_000,
+                ZoneOffset.UTC
+            ).toInstant();
         } else {
             // example date format "18-AUG-08 13:33:03"
@@ -232,4 +243,13 @@
     }
 
+    private static int parsePart6(String str, int off) {
+        return 100000 * num(str.charAt(off))
+              + 10000 * num(str.charAt(off + 1))
+               + 1000 * num(str.charAt(off + 2))
+                + 100 * num(str.charAt(off + 3))
+                 + 10 * num(str.charAt(off + 4))
+                      + num(str.charAt(off + 5));
+    }
+
     /**
      * Returns a new {@code SimpleDateFormat} for date only, according to <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a>.
Index: trunk/test/unit/org/openstreetmap/josm/io/rtklib/RtkLibPosReaderTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/io/rtklib/RtkLibPosReaderTest.java	(revision 17986)
+++ trunk/test/unit/org/openstreetmap/josm/io/rtklib/RtkLibPosReaderTest.java	(revision 17987)
@@ -76,3 +76,13 @@
         assertEquals(6, in.getNumberOfCoordinates());
     }
+
+    /**
+     * Tests reading another RTKLib pos file with yet another different date format.
+     * @throws Exception if any error occurs
+     */
+    @Test
+    void testReader3() throws Exception {
+        RtkLibPosReader in = read("nodist/data/rtklib_example3.pos");
+        assertEquals(1, in.getNumberOfCoordinates());
+    }
 }
Index: trunk/test/unit/org/openstreetmap/josm/tools/date/DateUtilsTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/tools/date/DateUtilsTest.java	(revision 17986)
+++ trunk/test/unit/org/openstreetmap/josm/tools/date/DateUtilsTest.java	(revision 17987)
@@ -103,4 +103,12 @@
         assertEquals(481161600000L, DateUtils.fromString("1985-04").getTime());
         assertEquals(473385600000L, DateUtils.fromString("1985").getTime());
+    }
+
+    @Test
+    void testRtklib() {
+        // examples taken from rtklib .pos files
+        assertEquals("2019-04-21T08:20:32Z", DateUtils.parseInstant("2019/04/21 08:20:32").toString());
+        assertEquals("2019-06-08T08:23:12.123Z", DateUtils.parseInstant("2019/06/08 08:23:12.123").toString());
+        assertEquals("2021-03-30T15:04:01.123456Z", DateUtils.parseInstant("2021/03/30 15:04:01.123456").toString());
     }
 
