diff --git a/commons/src/main/java/lcsb/mapviewer/common/comparator/CalendarComparator.java b/commons/src/main/java/lcsb/mapviewer/common/comparator/CalendarComparator.java
new file mode 100644
index 0000000000000000000000000000000000000000..24b139532069eeaef6e66bebddafb252c122445c
--- /dev/null
+++ b/commons/src/main/java/lcsb/mapviewer/common/comparator/CalendarComparator.java
@@ -0,0 +1,29 @@
+package lcsb.mapviewer.common.comparator;
+
+import java.util.Calendar;
+import java.util.Comparator;
+
+/**
+ * Comparator implementation for {@link Calendar} class.
+ * 
+ * @author Piotr Gawron
+ * 
+ */
+public class CalendarComparator implements Comparator<Calendar> {
+
+  @Override
+  public int compare(Calendar arg0, Calendar arg1) {
+    if (arg0 == null) {
+      if (arg1 == null) {
+        return 0;
+      } else {
+        return 1;
+      }
+
+    } else if (arg1 == null) {
+      return -1;
+    }
+    return ((Long) arg0.getTimeInMillis()).compareTo(arg1.getTimeInMillis());
+  }
+
+}
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/model/ModelComparator.java b/model/src/main/java/lcsb/mapviewer/model/map/model/ModelComparator.java
index fbc6f7c991900d1f49715f5fdba01ed2a0a01e32..1aebcdde3f22688d6e95322f307da95bbdcea3cd 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/model/ModelComparator.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/model/ModelComparator.java
@@ -1,5 +1,6 @@
 package lcsb.mapviewer.model.map.model;
 
+import java.util.Calendar;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
@@ -9,6 +10,7 @@ import org.apache.log4j.Logger;
 
 import lcsb.mapviewer.common.Comparator;
 import lcsb.mapviewer.common.Configuration;
+import lcsb.mapviewer.common.comparator.CalendarComparator;
 import lcsb.mapviewer.common.comparator.DoubleComparator;
 import lcsb.mapviewer.common.comparator.IntegerComparator;
 import lcsb.mapviewer.common.comparator.ListComparator;
@@ -170,6 +172,22 @@ public class ModelComparator extends Comparator<Model> {
       return status;
     }
 
+    CalendarComparator calendarComparator = new CalendarComparator();
+
+    status = calendarComparator.compare(arg0.getCreationDate(), arg1.getCreationDate());
+    if (status != 0) {
+      logger.debug("creation date different");
+      return status;
+    }
+
+    ListComparator<Calendar> calendarListComparator = new ListComparator<>(calendarComparator);
+
+    status = calendarListComparator.compare(arg0.getModificationDates(), arg1.getModificationDates());
+    if (status != 0) {
+      logger.debug("modification dates different");
+      return status;
+    }
+
     return 0;
   }
 
diff --git a/model/src/test/java/lcsb/mapviewer/model/map/model/ModelComparatorTest.java b/model/src/test/java/lcsb/mapviewer/model/map/model/ModelComparatorTest.java
index 7513748badb39df467eaa32a72455ec047d3a822..e931941514fdc3a04730c6943f4aea7262173588 100644
--- a/model/src/test/java/lcsb/mapviewer/model/map/model/ModelComparatorTest.java
+++ b/model/src/test/java/lcsb/mapviewer/model/map/model/ModelComparatorTest.java
@@ -5,6 +5,8 @@ import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 import static org.mockito.Mockito.when;
 
+import java.util.Calendar;
+
 import org.apache.log4j.Logger;
 import org.junit.After;
 import org.junit.Before;
@@ -449,4 +451,38 @@ public class ModelComparatorTest {
     }
   }
 
+  @Test
+  public void testCompareCreationDate() throws Exception {
+    try {
+      Model model1 = getModel();
+      Model model2 = getModel();
+      model1.setCreationDate(Calendar.getInstance());
+      assertTrue("Models have different creation dates", comparator.compare(model1, model2) != 0);
+      assertTrue(comparator.compare(model2, model1) != 0);
+      model2.setCreationDate(model1.getCreationDate());
+      assertEquals(0, comparator.compare(model1, model2));
+      assertEquals(0, comparator.compare(model2, model1));
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
+  @Test
+  public void testCompareModificationDate() throws Exception {
+    try {
+      Model model1 = getModel();
+      Model model2 = getModel();
+      model1.addModificationDate(Calendar.getInstance());
+      assertTrue("Models have different modification dates", comparator.compare(model1, model2) != 0);
+      assertTrue(comparator.compare(model2, model1) != 0);
+      model2.addModificationDate(model1.getModificationDates().get(0));
+      assertEquals(0, comparator.compare(model1, model2));
+      assertEquals(0, comparator.compare(model2, model1));
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+  }
+
 }