diff --git a/src/main/java/org/apache/commons/compress/archivers/ArchiveEntry.java b/src/main/java/org/apache/commons/compress/archivers/ArchiveEntry.java
index 2ee84af..ecab9f5 100644
--- a/src/main/java/org/apache/commons/compress/archivers/ArchiveEntry.java
+++ b/src/main/java/org/apache/commons/compress/archivers/ArchiveEntry.java
@@ -18,6 +18,8 @@
  */
 package org.apache.commons.compress.archivers;
 
+import java.util.Date;
+
 /**
  * Represents an entry of an archive.
  */
@@ -34,4 +36,7 @@
 	
 	/** True if the entry refers to a directory */
 	public boolean isDirectory();
+
+    /** The last modified date of the entry */
+    public Date getLastModifiedDate();
 }
diff --git a/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveEntry.java b/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveEntry.java
index 8ce8f26..871faaa 100644
--- a/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveEntry.java
+++ b/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveEntry.java
@@ -19,6 +19,7 @@
 package org.apache.commons.compress.archivers.ar;
 
 import java.io.File;
+import java.util.Date;
 
 import org.apache.commons.compress.archivers.ArchiveEntry;
 
@@ -111,6 +112,11 @@
 		return lastModified;
 	}
 	
+    /** {@inheritDocs} */
+    public Date getLastModifiedDate() {
+        return new Date(1000 * getLastModified());
+    }
+
 	public long getLength() {
 		return length;
 	}
diff --git a/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveEntry.java b/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveEntry.java
index cb506de..e8adfb6 100644
--- a/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveEntry.java
+++ b/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveEntry.java
@@ -19,6 +19,7 @@
 package org.apache.commons.compress.archivers.cpio;
 
 import java.io.File;
+import java.util.Date;
 
 import org.apache.commons.compress.archivers.ArchiveEntry;
 
@@ -492,6 +493,11 @@
         return this.mtime;
     }
 
+    /** {@inheritDocs} */
+    public Date getLastModifiedDate() {
+        return new Date(1000 * getTime());
+    }
+
     /**
      * Get the user id.
      * 
diff --git a/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveEntry.java b/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveEntry.java
index bc8a098..71ddeb6 100644
--- a/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveEntry.java
+++ b/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveEntry.java
@@ -463,6 +463,11 @@
         return new Date(modTime * MILLIS_PER_SECOND);
     }
 
+    /** {@inheritDocs} */
+    public Date getLastModifiedDate() {
+        return getModTime();
+    }
+
     /**
      * Get this entry's file.
      *
diff --git a/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntry.java b/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntry.java
index b20eb4b..d737ec2 100644
--- a/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntry.java
+++ b/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntry.java
@@ -18,6 +18,7 @@
 package org.apache.commons.compress.archivers.zip;
 
 import java.io.File;
+import java.util.Date;
 import java.util.LinkedHashMap;
 import java.util.zip.ZipException;
 import org.apache.commons.compress.archivers.ArchiveEntry;
@@ -391,6 +392,11 @@
         }
     }
 
+    /** {@inheritDocs} */
+    public Date getLastModifiedDate() {
+        return new Date(getTime());
+    }
+
     /* (non-Javadoc)
      * @see java.lang.Object#equals(java.lang.Object)
      */
diff --git a/src/test/java/org/apache/commons/compress/archivers/memory/MemoryArchiveEntry.java b/src/test/java/org/apache/commons/compress/archivers/memory/MemoryArchiveEntry.java
index b71b900..ef527b1 100644
--- a/src/test/java/org/apache/commons/compress/archivers/memory/MemoryArchiveEntry.java
+++ b/src/test/java/org/apache/commons/compress/archivers/memory/MemoryArchiveEntry.java
@@ -18,6 +18,7 @@
  */
 package org.apache.commons.compress.archivers.memory;
 
+import java.util.Date;
 import org.apache.commons.compress.archivers.ArchiveEntry;
 
 public final class MemoryArchiveEntry implements ArchiveEntry {
@@ -42,4 +43,8 @@
 		return false;
 	}
 
+    /** {@inheritDocs} */
+    public Date getLastModifiedDate() {
+        return new Date();
+    }
 }
