add ClockTime
This commit is contained in:
parent
5d7c3f4f9a
commit
dc6dd682ff
|
|
@ -98,6 +98,88 @@ Time Time::Now() noexcept
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------
|
||||||
|
// ClockTime
|
||||||
|
//-------------------------------------------------------
|
||||||
|
|
||||||
|
ClockTime::ClockTime()
|
||||||
|
: ms_since_epoch_(0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
long ClockTime::GetTimeStamp() const
|
||||||
|
{
|
||||||
|
using std::chrono::duration_cast;
|
||||||
|
using std::chrono::milliseconds;
|
||||||
|
using std::chrono::seconds;
|
||||||
|
|
||||||
|
const auto timestamp = duration_cast<seconds>(milliseconds(ms_since_epoch_)).count();
|
||||||
|
return static_cast<long>(timestamp);
|
||||||
|
}
|
||||||
|
|
||||||
|
long ClockTime::GetMillisecondsSinceEpoch() const
|
||||||
|
{
|
||||||
|
return ms_since_epoch_;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::time_t ClockTime::GetCTime() const
|
||||||
|
{
|
||||||
|
return static_cast<time_t>(GetTimeStamp());
|
||||||
|
}
|
||||||
|
|
||||||
|
ClockTime::ClockTime(long ms_since_epoch)
|
||||||
|
: ms_since_epoch_(ms_since_epoch)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
ClockTime ClockTime::FromTimeStamp(long timestamp) noexcept
|
||||||
|
{
|
||||||
|
using std::chrono::duration_cast;
|
||||||
|
using std::chrono::milliseconds;
|
||||||
|
using std::chrono::seconds;
|
||||||
|
|
||||||
|
const auto ms = duration_cast<milliseconds>(seconds(timestamp)).count();
|
||||||
|
return ClockTime(static_cast<long>(ms));
|
||||||
|
}
|
||||||
|
|
||||||
|
ClockTime ClockTime::Now() noexcept
|
||||||
|
{
|
||||||
|
using std::chrono::duration_cast;
|
||||||
|
using std::chrono::milliseconds;
|
||||||
|
using std::chrono::system_clock;
|
||||||
|
|
||||||
|
const auto now = system_clock::now();
|
||||||
|
const long long count = duration_cast<milliseconds>(now.time_since_epoch()).count();
|
||||||
|
return ClockTime{ static_cast<long>(count) };
|
||||||
|
}
|
||||||
|
|
||||||
|
const Duration ClockTime::operator-(const ClockTime& other) const
|
||||||
|
{
|
||||||
|
return Duration(ms_since_epoch_ - other.ms_since_epoch_);
|
||||||
|
}
|
||||||
|
|
||||||
|
const ClockTime ClockTime::operator+(const Duration& dur) const
|
||||||
|
{
|
||||||
|
return ClockTime{ ms_since_epoch_ + dur.Milliseconds() };
|
||||||
|
}
|
||||||
|
|
||||||
|
const ClockTime ClockTime::operator-(const Duration& dur) const
|
||||||
|
{
|
||||||
|
return ClockTime{ ms_since_epoch_ - dur.Milliseconds() };
|
||||||
|
}
|
||||||
|
|
||||||
|
ClockTime& ClockTime::operator+=(const Duration& other)
|
||||||
|
{
|
||||||
|
ms_since_epoch_ += other.Milliseconds();
|
||||||
|
return (*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
ClockTime& ClockTime::operator-=(const Duration& other)
|
||||||
|
{
|
||||||
|
ms_since_epoch_ -= other.Milliseconds();
|
||||||
|
return (*this);
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------
|
//-------------------------------------------------------
|
||||||
// Duration
|
// Duration
|
||||||
//-------------------------------------------------------
|
//-------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
#include <kiwano/core/Common.h>
|
#include <kiwano/core/Common.h>
|
||||||
|
#include <ctime>
|
||||||
|
|
||||||
namespace kiwano
|
namespace kiwano
|
||||||
{
|
{
|
||||||
|
|
@ -198,6 +199,49 @@ private:
|
||||||
long dur_;
|
long dur_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \~chinese
|
||||||
|
* @brief 时钟时间
|
||||||
|
*/
|
||||||
|
struct KGE_API ClockTime
|
||||||
|
{
|
||||||
|
ClockTime();
|
||||||
|
|
||||||
|
/// \~chinese
|
||||||
|
/// @brief 获取当前时间戳
|
||||||
|
long GetTimeStamp() const;
|
||||||
|
|
||||||
|
/// \~chinese
|
||||||
|
/// @brief 获取自纪元以来的毫秒数
|
||||||
|
long GetMillisecondsSinceEpoch() const;
|
||||||
|
|
||||||
|
/// \~chinese
|
||||||
|
/// @brief 获取 C 风格的时间
|
||||||
|
std::time_t GetCTime() const;
|
||||||
|
|
||||||
|
/// \~chinese
|
||||||
|
/// @brief 获取当前时间
|
||||||
|
static ClockTime Now() noexcept;
|
||||||
|
|
||||||
|
/// \~chinese
|
||||||
|
/// @brief 时间戳转化为时间
|
||||||
|
static ClockTime FromTimeStamp(long timestamp) noexcept;
|
||||||
|
|
||||||
|
const Duration operator-(const ClockTime&) const;
|
||||||
|
|
||||||
|
const ClockTime operator+(const Duration&) const;
|
||||||
|
const ClockTime operator-(const Duration&) const;
|
||||||
|
|
||||||
|
ClockTime& operator+=(const Duration&);
|
||||||
|
ClockTime& operator-=(const Duration&);
|
||||||
|
|
||||||
|
private:
|
||||||
|
ClockTime(long ms_since_epoch);
|
||||||
|
|
||||||
|
private:
|
||||||
|
long ms_since_epoch_;
|
||||||
|
};
|
||||||
|
|
||||||
inline long Duration::Milliseconds() const
|
inline long Duration::Milliseconds() const
|
||||||
{
|
{
|
||||||
return milliseconds_;
|
return milliseconds_;
|
||||||
|
|
@ -232,6 +276,7 @@ inline bool Time::IsZero() const
|
||||||
{
|
{
|
||||||
return dur_ == 0;
|
return dur_ == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace kiwano
|
} // namespace kiwano
|
||||||
|
|
||||||
#if defined(KGE_HAS_LITERALS)
|
#if defined(KGE_HAS_LITERALS)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue