Index: /trunk/src/org/openstreetmap/josm/tools/ExifReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/ExifReader.java	(revision 9671)
+++ /trunk/src/org/openstreetmap/josm/tools/ExifReader.java	(revision 9672)
@@ -7,5 +7,4 @@
 import java.util.Date;
 
-import com.drew.metadata.exif.ExifDirectoryBase;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
@@ -19,4 +18,5 @@
 import com.drew.metadata.MetadataException;
 import com.drew.metadata.Tag;
+import com.drew.metadata.exif.ExifDirectoryBase;
 import com.drew.metadata.exif.ExifIFD0Directory;
 import com.drew.metadata.exif.ExifSubIFDDirectory;
@@ -70,5 +70,5 @@
                 if (subSeconds != null) {
                     try {
-                        date.setTime(date.getTime() + Integer.parseInt(subSeconds));
+                        date.setTime(date.getTime() + (long) (1000L * Double.parseDouble("0." + subSeconds)));
                     } catch (NumberFormatException e) {
                         Main.warn("Failed parsing sub seconds from [{0}]", subSeconds);
Index: /trunk/test/unit/org/openstreetmap/josm/tools/ExifReaderTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/tools/ExifReaderTest.java	(revision 9671)
+++ /trunk/test/unit/org/openstreetmap/josm/tools/ExifReaderTest.java	(revision 9672)
@@ -6,4 +6,5 @@
 
 import java.io.File;
+import java.io.IOException;
 import java.text.DecimalFormat;
 import java.text.ParseException;
@@ -16,4 +17,5 @@
 import org.junit.Before;
 import org.junit.Test;
+import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.tools.date.DateUtilsTest;
@@ -49,5 +51,5 @@
     /**
      * Tests reading sub-seconds from the EXIF header
-     * @throws ParseException  if {@link ExifReader#readTime} fails to parse date/time of sample file
+     * @throws ParseException if {@link ExifReader#readTime} fails to parse date/time of sample file
      */
     @Test
@@ -80,5 +82,5 @@
 
     /**
-     * Test coordinates extraction
+     * Test direction extraction
      */
     @Test
@@ -87,3 +89,14 @@
         assertEquals(new Double(46.5), direction);
     }
+
+    /**
+     * Non-regression test for ticket <a href="https://josm.openstreetmap.de/ticket/11685">#11685</a>
+     * @throws IOException if an error occurs during reading
+     */
+    @Test
+    public void testTicket11685() throws IOException {
+        File file = new File(TestUtils.getRegressionDataFile(11685, "2015-11-08_15-33-27-Xiaomi_YI-Y0030832.jpg"));
+        String dateStr = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS").format(ExifReader.readTime(file));
+        assertEquals("2015-11-08T15:33:27.500", dateStr);
+    }
 }
