summaryrefslogtreecommitdiff
path: root/cpp/src/IceUtil/Time.cpp
diff options
context:
space:
mode:
authorMichi Henning <michi@zeroc.com>2005-12-19 06:37:13 +0000
committerMichi Henning <michi@zeroc.com>2005-12-19 06:37:13 +0000
commit4a8626848d5b91814d321098f7d1e61c19f063f9 (patch)
treea2e1c326103bb680b63291eba3219def4645be7e /cpp/src/IceUtil/Time.cpp
parentFixed bug 666. (diff)
downloadice-4a8626848d5b91814d321098f7d1e61c19f063f9.tar.bz2
ice-4a8626848d5b91814d321098f7d1e61c19f063f9.tar.xz
ice-4a8626848d5b91814d321098f7d1e61c19f063f9.zip
Bug 544.
Diffstat (limited to 'cpp/src/IceUtil/Time.cpp')
-rw-r--r--cpp/src/IceUtil/Time.cpp39
1 files changed, 37 insertions, 2 deletions
diff --git a/cpp/src/IceUtil/Time.cpp b/cpp/src/IceUtil/Time.cpp
index aa0f5a3fa85..69100c94463 100644
--- a/cpp/src/IceUtil/Time.cpp
+++ b/cpp/src/IceUtil/Time.cpp
@@ -9,6 +9,7 @@
#include <IceUtil/DisableWarnings.h>
#include <IceUtil/Time.h>
+#include <iomanip>
#ifdef _WIN32
# include <sys/timeb.h>
@@ -104,7 +105,7 @@ IceUtil::Time::toMicroSecondsDouble() const
}
std::string
-IceUtil::Time::toString() const
+IceUtil::Time::toDateTime() const
{
time_t time = static_cast<long>(_usec / 1000000);
@@ -121,13 +122,47 @@ IceUtil::Time::toString() const
strftime(buf, sizeof(buf), "%x %H:%M:%S", t);
std::ostringstream os;
- os << buf << ":";
+ os << buf << ".";
os.fill('0');
os.width(3);
os << static_cast<long>(_usec % 1000000 / 1000);
return os.str();
}
+//
+// TODO: toString() is deprecated. Leave for two more releases after 3.0.0 and then remove it.
+//
+std::string
+IceUtil::Time::toString() const
+{
+ return toDateTime();
+}
+
+std::string
+IceUtil::Time::toDuration() const
+{
+ Int64 usecs = _usec % 1000000;
+ Int64 secs = _usec / 1000000 % 60;
+ Int64 mins = _usec / 1000000 / 60 % 60;
+ Int64 hours = _usec / 1000000 / 60 / 60 % 24;
+ Int64 days = _usec / 1000000 / 60 / 60 / 24;
+
+ using namespace std;
+
+ ostringstream os;
+ if(days != 0)
+ {
+ os << days << "d ";
+ }
+ os << setfill('0') << setw(2) << hours << ":" << setw(2) << mins << ":" << setw(2) << secs;
+ if(usecs != 0)
+ {
+ os << "." << setw(3) << (usecs / 1000);
+ }
+
+ return os.str();
+}
+
Time::Time(Int64 usec) :
_usec(usec)
{