diff --git a/source/RobotAPI/interface/objectpose/object_pose_types.ice b/source/RobotAPI/interface/objectpose/object_pose_types.ice
index 4b09fd18ef1c6fe771200b3338ae67073616c42b..35960cce72ba7157a2c3bfbbca61824ef6a26334 100644
--- a/source/RobotAPI/interface/objectpose/object_pose_types.ice
+++ b/source/RobotAPI/interface/objectpose/object_pose_types.ice
@@ -23,8 +23,8 @@
 
 #pragma once
 
-//fq
 #include <ArmarXCore/interface/core/BasicVectorTypes.ice>
+#include <ArmarXCore/interface/core/time.ice>
 
 #include <RobotAPI/interface/core/PoseBase.ice>
 #include <RobotAPI/interface/core/NameValueMap.ice>
@@ -101,7 +101,7 @@ module armarx
                 /// Confidence in [0, 1] (1 = full, 0 = none).
                 float confidence = 0;
                 /// Source timestamp.
-                long timestampMicroSeconds = -1;
+                armarx::core::time::dto::DateTime timestamp;
 
                 /// [Optional] Object bounding box in object's local coordinate frame.
                 Box localOOBB;
@@ -146,7 +146,7 @@ module armarx
                 /// Confidence in [0, 1] (1 = full, 0 = none).
                 float confidence = 0;
                 /// Source timestamp.
-                long timestampMicroSeconds = -1;
+                armarx::core::time::dto::DateTime timestamp;
 
                 /// Object bounding box in object's local coordinate frame. May be null.
                 Box localOOBB;
diff --git a/source/RobotAPI/libraries/ArmarXObjects/ObjectPose.cpp b/source/RobotAPI/libraries/ArmarXObjects/ObjectPose.cpp
index 11e583902b8fbb0963e8f4c1b00746de01356f1b..413d4681c37d51c959573f5a2528a07d66ea4b9b 100644
--- a/source/RobotAPI/libraries/ArmarXObjects/ObjectPose.cpp
+++ b/source/RobotAPI/libraries/ArmarXObjects/ObjectPose.cpp
@@ -7,6 +7,7 @@
 #include <VirtualRobot/RobotConfig.h>
 
 #include <ArmarXCore/core/exceptions/local/ExpressionException.h>
+#include <ArmarXCore/core/time/ice_conversions.h>
 
 #include <RobotAPI/libraries/core/Pose.h>
 #include <RobotAPI/libraries/core/FramedPose.h>
@@ -51,7 +52,7 @@ namespace armarx::objpose
         objpose::fromIce(ice.attachment, this->attachment);
 
         confidence = ice.confidence;
-        timestamp = IceUtil::Time::microSeconds(ice.timestampMicroSeconds);
+        armarx::core::time::fromIce(ice.timestamp, timestamp);
 
         objpose::fromIce(ice.localOOBB, localOOBB);
     }
@@ -88,7 +89,7 @@ namespace armarx::objpose
         objpose::toIce(ice.attachment, this->attachment);
 
         ice.confidence = confidence;
-        ice.timestampMicroSeconds = timestamp.toMicroSeconds();
+        armarx::core::time::toIce(ice.timestamp, timestamp);
 
         objpose::toIce(ice.localOOBB, localOOBB);
     }
@@ -132,7 +133,7 @@ namespace armarx::objpose
         attachment = std::nullopt;
 
         confidence = provided.confidence;
-        timestamp = IceUtil::Time::microSeconds(provided.timestampMicroSeconds);
+        armarx::core::time::fromIce(provided.timestamp, timestamp);
 
         objpose::fromIce(provided.localOOBB, localOOBB);
     }
diff --git a/source/RobotAPI/libraries/ArmarXObjects/ObjectPose.h b/source/RobotAPI/libraries/ArmarXObjects/ObjectPose.h
index 66c87f22f5f369c154043e83a72146f0d5bbea54..cc8b4c6ebd1f1f112667df6c3eccc1308e5e5416 100644
--- a/source/RobotAPI/libraries/ArmarXObjects/ObjectPose.h
+++ b/source/RobotAPI/libraries/ArmarXObjects/ObjectPose.h
@@ -4,7 +4,6 @@
 #include <map>
 #include <vector>
 
-
 #include <Eigen/Core>
 
 #include <SimoxUtility/shapes/OrientedBox.h>
@@ -12,8 +11,7 @@
 #include <VirtualRobot/VirtualRobot.h>
 
 #include <ArmarXCore/core/PackagePath.h>
-
-#include <IceUtil/Time.h>
+#include <ArmarXCore/core/time/DateTime.h>
 
 #include <RobotAPI/interface/objectpose/object_pose_types.h>
 #include <RobotAPI/libraries/ArmarXObjects/forward_declarations.h>
@@ -87,7 +85,7 @@ namespace armarx::objpose
         /// Confidence in [0, 1] (1 = full, 0 = none).
         float confidence = 0;
         /// Source timestamp.
-        IceUtil::Time timestamp = IceUtil::Time::microSeconds(-1);
+        DateTime timestamp = DateTime::Invalid();
 
         /// Object bounding box in object's local coordinate frame.
         /// @see oobbRobot(), oobbGlobal()
diff --git a/source/RobotAPI/libraries/ArmarXObjects/ProvidedObjectPose.cpp b/source/RobotAPI/libraries/ArmarXObjects/ProvidedObjectPose.cpp
index c67af0381b114b1b5e145b60a3c239b464f4ec31..c07cea85884a957218d9a9903ffcdd8c674b37bd 100644
--- a/source/RobotAPI/libraries/ArmarXObjects/ProvidedObjectPose.cpp
+++ b/source/RobotAPI/libraries/ArmarXObjects/ProvidedObjectPose.cpp
@@ -1,6 +1,7 @@
 #include "ProvidedObjectPose.h"
 
 #include <ArmarXCore/core/exceptions/local/ExpressionException.h>
+#include <ArmarXCore/core/time/ice_conversions.h>
 
 #include <RobotAPI/libraries/core/Pose.h>
 #include <RobotAPI/libraries/core/FramedPose.h>
@@ -34,7 +35,7 @@ namespace armarx::objpose
         objectJointValues = ice.objectJointValues;
 
         confidence = ice.confidence;
-        timestamp = IceUtil::Time::microSeconds(ice.timestampMicroSeconds);
+        armarx::core::time::fromIce(ice.timestamp, timestamp);
 
         objpose::fromIce(ice.localOOBB, localOOBB);
     }
@@ -60,7 +61,7 @@ namespace armarx::objpose
         ice.objectJointValues = objectJointValues;
 
         ice.confidence = confidence;
-        ice.timestampMicroSeconds = timestamp.toMicroSeconds();
+        armarx::core::time::toIce(ice.timestamp, timestamp);
 
         objpose::toIce(ice.localOOBB, localOOBB);
     }
diff --git a/source/RobotAPI/libraries/ArmarXObjects/ProvidedObjectPose.h b/source/RobotAPI/libraries/ArmarXObjects/ProvidedObjectPose.h
index c323a879508a60ad1dfd6b4af58dc4c4298ec534..c8d846893dbf857f1ca8bb5dbaabae1ba0b1b14b 100644
--- a/source/RobotAPI/libraries/ArmarXObjects/ProvidedObjectPose.h
+++ b/source/RobotAPI/libraries/ArmarXObjects/ProvidedObjectPose.h
@@ -8,7 +8,7 @@
 
 #include <SimoxUtility/shapes/OrientedBox.h>
 
-#include <IceUtil/Time.h>
+#include <ArmarXCore/core/time/DateTime.h>
 
 #include <RobotAPI/interface/objectpose/object_pose_types.h>
 #include <RobotAPI/libraries/ArmarXObjects/forward_declarations.h>
@@ -57,7 +57,7 @@ namespace armarx::objpose
         /// Confidence in [0, 1] (1 = full, 0 = none).
         float confidence = 0;
         /// Source timestamp.
-        IceUtil::Time timestamp = IceUtil::Time::microSeconds(-1);
+        DateTime timestamp = DateTime::Invalid();
 
         /// Object bounding box in object's local coordinate frame.
         /// @see oobbRobot(), oobbGlobal()
diff --git a/source/RobotAPI/libraries/ArmarXObjects/aron_conversions/objpose.cpp b/source/RobotAPI/libraries/ArmarXObjects/aron_conversions/objpose.cpp
index bb9fb98e66584e8e22889d79c57900df0df1d99f..f21931adabf669f0da8804cf937fd6205c94248b 100644
--- a/source/RobotAPI/libraries/ArmarXObjects/aron_conversions/objpose.cpp
+++ b/source/RobotAPI/libraries/ArmarXObjects/aron_conversions/objpose.cpp
@@ -104,7 +104,7 @@ void armarx::objpose::fromAron(const arondto::ObjectPose& dto, ObjectPose& bo)
 
     bo.confidence = dto.confidence;
 
-    bo.timestamp = dto.timestamp;
+    fromAron(dto.timestamp, bo.timestamp);
 
     if (dto.localOOBBValid)
     {
@@ -153,7 +153,7 @@ void armarx::objpose::toAron(arondto::ObjectPose& dto, const ObjectPose& bo)
 
     dto.confidence = bo.confidence;
 
-    dto.timestamp = bo.timestamp;
+    toAron(dto.timestamp, bo.timestamp);
 
     if (bo.localOOBB)
     {
diff --git a/source/RobotAPI/libraries/ArmarXObjects/json_conversions.cpp b/source/RobotAPI/libraries/ArmarXObjects/json_conversions.cpp
index 6080cfda786c3d6115c6647fe7decd4e5faa6b03..cf42e169e67f0f18aef427c65fd24a73160983bf 100644
--- a/source/RobotAPI/libraries/ArmarXObjects/json_conversions.cpp
+++ b/source/RobotAPI/libraries/ArmarXObjects/json_conversions.cpp
@@ -43,7 +43,7 @@ void armarx::objpose::to_json(simox::json::json& j, const ObjectPose& op)
     j["robotPose"] = op.robotPose;
 
     j["confidence"] = op.confidence;
-    j["timestampMicroSeconds"] = op.timestamp.toMicroSeconds();
+    j["timestampMicroSeconds"] = op.timestamp.toMicroSecondsSinceEpoch();
 
     if (op.localOOBB)
     {
@@ -68,7 +68,7 @@ void armarx::objpose::from_json(const simox::json::json& j, ObjectPose& op)
     op.robotPose = j.at("robotPose");
 
     op.confidence = j.at("confidence");
-    op.timestamp = IceUtil::Time::microSeconds(j.at("timestampMicroSeconds"));
+    op.timestamp = DateTime(Duration::MicroSeconds(j.at("timestampMicroSeconds")));
 
     if (j.count("localOOBB"))
     {