diff --git a/redfish-core/include/utils/time_utils.hpp b/redfish-core/include/utils/time_utils.hpp
index 9b13147..f4fb0c0 100644
--- a/redfish-core/include/utils/time_utils.hpp
+++ b/redfish-core/include/utils/time_utils.hpp
@@ -2,6 +2,8 @@
 
 #include "logging.hpp"
 
+#include <boost/date_time.hpp>
+
 #include <algorithm>
 #include <charconv>
 #include <chrono>
@@ -414,5 +416,31 @@
     return std::make_pair(dateTime, timeOffset);
 }
 
+using usSinceEpoch = std::chrono::duration<uint64_t, std::micro>;
+inline std::optional<usSinceEpoch> dateStringToEpoch(std::string_view datetime)
+{
+    std::string date(datetime);
+    std::stringstream stream(date);
+    // Convert from ISO 8601 to boost local_time
+    // (BMC only has time in UTC)
+    boost::posix_time::ptime posixTime;
+    boost::posix_time::ptime epoch(boost::gregorian::date(1970, 1, 1));
+    // Facet gets deleted with the stringsteam
+    auto ifc = std::make_unique<boost::local_time::local_time_input_facet>(
+        "%Y-%m-%d %H:%M:%S%F %ZP");
+    stream.imbue(std::locale(stream.getloc(), ifc.release()));
+
+    boost::local_time::local_date_time ldt(boost::local_time::not_a_date_time);
+
+    if (!(stream >> ldt))
+    {
+        return std::nullopt;
+    }
+    posixTime = ldt.utc_time();
+    boost::posix_time::time_duration dur = posixTime - epoch;
+    uint64_t durMicroSecs = static_cast<uint64_t>(dur.total_microseconds());
+    return std::chrono::duration<uint64_t, std::micro>{durMicroSecs};
+}
+
 } // namespace time_utils
 } // namespace redfish
diff --git a/redfish-core/lib/managers.hpp b/redfish-core/lib/managers.hpp
index 74008cb..e8fa14b 100644
--- a/redfish-core/lib/managers.hpp
+++ b/redfish-core/lib/managers.hpp
@@ -27,7 +27,6 @@
 #include "utils/systemd_utils.hpp"
 #include "utils/time_utils.hpp"
 
-#include <boost/date_time.hpp>
 #include <sdbusplus/asio/property.hpp>
 #include <sdbusplus/unpack_properties.hpp>
 
@@ -1887,46 +1886,30 @@
 {
     BMCWEB_LOG_DEBUG << "Set date time: " << datetime;
 
-    std::stringstream stream(datetime);
-    // Convert from ISO 8601 to boost local_time
-    // (BMC only has time in UTC)
-    boost::posix_time::ptime posixTime;
-    boost::posix_time::ptime epoch(boost::gregorian::date(1970, 1, 1));
-    // Facet gets deleted with the stringsteam
-    auto ifc = std::make_unique<boost::local_time::local_time_input_facet>(
-        "%Y-%m-%d %H:%M:%S%F %ZP");
-    stream.imbue(std::locale(stream.getloc(), ifc.release()));
-
-    boost::local_time::local_date_time ldt(boost::local_time::not_a_date_time);
-
-    if (stream >> ldt)
-    {
-        posixTime = ldt.utc_time();
-        boost::posix_time::time_duration dur = posixTime - epoch;
-        uint64_t durMicroSecs = static_cast<uint64_t>(dur.total_microseconds());
-        crow::connections::systemBus->async_method_call(
-            [aResp{std::move(aResp)}, datetime{std::move(datetime)}](
-                const boost::system::error_code ec) {
-            if (ec)
-            {
-                BMCWEB_LOG_DEBUG << "Failed to set elapsed time. "
-                                    "DBUS response error "
-                                 << ec;
-                messages::internalError(aResp->res);
-                return;
-            }
-            aResp->res.jsonValue["DateTime"] = datetime;
-            },
-            "xyz.openbmc_project.Time.Manager", "/xyz/openbmc_project/time/bmc",
-            "org.freedesktop.DBus.Properties", "Set",
-            "xyz.openbmc_project.Time.EpochTime", "Elapsed",
-            dbus::utility::DbusVariantType(durMicroSecs));
-    }
-    else
+    std::optional<redfish::time_utils::usSinceEpoch> us =
+        redfish::time_utils::dateStringToEpoch(datetime);
+    if (!us)
     {
         messages::propertyValueFormatError(aResp->res, datetime, "DateTime");
         return;
     }
+    crow::connections::systemBus->async_method_call(
+        [aResp{std::move(aResp)},
+         datetime{std::move(datetime)}](const boost::system::error_code ec) {
+        if (ec)
+        {
+            BMCWEB_LOG_DEBUG << "Failed to set elapsed time. "
+                                "DBUS response error "
+                             << ec;
+            messages::internalError(aResp->res);
+            return;
+        }
+        aResp->res.jsonValue["DateTime"] = datetime;
+        },
+        "xyz.openbmc_project.Time.Manager", "/xyz/openbmc_project/time/bmc",
+        "org.freedesktop.DBus.Properties", "Set",
+        "xyz.openbmc_project.Time.EpochTime", "Elapsed",
+        dbus::utility::DbusVariantType(us->count()));
 }
 
 inline void requestRoutesManager(App& app)
