Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/ShpReader.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/ShpReader.java	(revision 30981)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/ShpReader.java	(revision 30982)
@@ -17,4 +17,6 @@
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -59,5 +61,5 @@
     private final ShpHandler handler;
     private final Set<OsmPrimitive> featurePrimitives = new HashSet<>();
-    
+
     public ShpReader(ShpHandler handler) {
         super(handler, NationalHandlers.DEFAULT_SHP_HANDLERS);
@@ -78,6 +80,6 @@
         }
     }
-    
-    private void parseFeature(Feature feature, final Component parent) 
+
+    private void parseFeature(Feature feature, final Component parent)
             throws UserCancelException, GeoMathTransformException, FactoryException, GeoCrsException, MismatchedDimensionException, TransformException {
         featurePrimitives.clear();
@@ -86,5 +88,5 @@
 
             GeometryDescriptor desc = geometry.getDescriptor();
-            
+
             if (crs == null) {
                 if (desc != null && desc.getCoordinateReferenceSystem() != null) {
@@ -114,13 +116,13 @@
                 }
             }
-            
+
             OsmPrimitive primitive = null;
-            
+
             if (geometry.getValue() instanceof Point) {
                 primitive = createOrGetEmptyNode((Point) geometry.getValue());
-                
+
             } else if (geometry.getValue() instanceof GeometryCollection) { // Deals with both MultiLineString and MultiPolygon
                 GeometryCollection mp = (GeometryCollection) geometry.getValue();
-                int nGeometries = mp.getNumGeometries(); 
+                int nGeometries = mp.getNumGeometries();
                 if (nGeometries < 1) {
                     Main.error("empty geometry collection found");
@@ -128,5 +130,5 @@
                     Relation r = null;
                     Way w = null;
-                    
+
                     for (int i=0; i<nGeometries; i++) {
                         Geometry g = mp.getGeometryN(i);
@@ -166,5 +168,5 @@
                 Main.debug("-------------------------------------------------------------");
             }
-            
+
             if (primitive != null) {
                 // Read primitive non geometric attributes
@@ -178,5 +180,5 @@
         transform = null;
         try {
-            if (file != null) { 
+            if (file != null) {
                 Map<String, Serializable> params = new HashMap<>();
                 Charset charset = null;
@@ -205,20 +207,20 @@
                     throw new IOException(tr("Unable to find a data store for file {0}", file.getName()));
                 }
-                
+
                 String[] typeNames = dataStore.getTypeNames();
                 String typeName = typeNames[0];
-    
+
                 FeatureSource<?,?> featureSource = dataStore.getFeatureSource(typeName);
                 FeatureCollection<?,?> collection = featureSource.getFeatures();
                 FeatureIterator<?> iterator = collection.features();
-                
+
                 if (instance != null) {
                     instance.beginTask(tr("Loading shapefile ({0} features)", collection.size()), collection.size());
                 }
-                
+
                 int n = 0;
-                
+
                 Component parent = instance != null ? instance.getWindowParent() : Main.parent;
-                
+
                 try {
                     while (iterator.hasNext()) {
@@ -258,23 +260,26 @@
         return ds;
     }
-    
+
     private static final void readNonGeometricAttributes(Feature feature, OsmPrimitive primitive) {
-            try {
-        for (Property prop : feature.getProperties()) {
-            if (!(prop instanceof GeometryAttribute)) {
-                Name name = prop.getName();
-                Object value = prop.getValue();
-                if (name != null && value != null) {
-                    String sName = name.toString();
-                    String sValue = value.toString();
-                    if (!sName.isEmpty() && !sValue.isEmpty()) {
-                                               primitive.put(sName, sValue);
-                    }
-                }
-            }
-        }
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
+        try {
+            for (Property prop : feature.getProperties()) {
+                if (!(prop instanceof GeometryAttribute)) {
+                    Name name = prop.getName();
+                    Object value = prop.getValue();
+                    if (name != null && value != null) {
+                        String sName = name.toString();
+                        String sValue = value.toString();
+                        if (value instanceof Date) {
+                            sValue = new SimpleDateFormat("yyyy-MM-dd").format(value);
+                        }
+                        if (!sName.isEmpty() && !sValue.isEmpty()) {
+                            primitive.put(sName, sValue);
+                        }
+                    }
+                }
+            }
+        } catch (Exception e) {
+            Main.error(e);
+        }
     }
 
@@ -285,5 +290,5 @@
         return n;
     }
-    
+
     @Override
     protected <T extends OsmPrimitive> T addOsmPrimitive(T p) {
