diff --git a/selutility.cpp b/selutility.cpp
index 0107515..3f9d9ab 100644
--- a/selutility.cpp
+++ b/selutility.cpp
@@ -182,6 +182,38 @@
     return internal::prepareSELEntry(objPath, iter);
 }
 
+std::chrono::seconds getEntryTimeStamp(const std::string& objPath)
+{
+    sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
+
+    auto service = ipmi::getService(bus, logEntryIntf, objPath);
+
+    using namespace std::string_literals;
+    static const auto propTimeStamp = "Timestamp"s;
+
+    auto methodCall = bus.new_method_call(service.c_str(),
+                                          objPath.c_str(),
+                                          propIntf,
+                                          "Get");
+    methodCall.append(logEntryIntf);
+    methodCall.append(propTimeStamp);
+
+    auto reply = bus.call(methodCall);
+    if (reply.is_method_error())
+    {
+        log<level::ERR>("Error in reading Timestamp from Entry interface");
+        elog<InternalFailure>();
+    }
+
+    sdbusplus::message::variant<uint64_t> timeStamp;
+    reply.read(timeStamp);
+
+    std::chrono::milliseconds chronoTimeStamp(
+            sdbusplus::message::variant_ns::get<uint64_t>(timeStamp));
+
+    return std::chrono::duration_cast<std::chrono::seconds>(chronoTimeStamp);
+}
+
 } // namespace sel
 
 } // namespace ipmi
diff --git a/selutility.hpp b/selutility.hpp
index 573e89b..09104a3 100644
--- a/selutility.hpp
+++ b/selutility.hpp
@@ -51,6 +51,14 @@
  */
 GetSELEntryResponse convertLogEntrytoSEL(const std::string& objPath);
 
+/** @brief Get the timestamp of the log entry
+ *
+ *  @param[in] objPath - DBUS object path of the logging entry.
+ *
+ *  @return On success return the timestamp of the log entry as number of
+ *          seconds from epoch.
+ */
+std::chrono::seconds getEntryTimeStamp(const std::string& objPath);
 
 namespace internal
 {
@@ -68,7 +76,7 @@
         const std::string& objPath,
         ipmi::sensor::InvObjectIDMap::const_iterator iter);
 
-} //internal
+}
 
 } // namespace sel
 
