AuroraRuntime/Include/Aurora/Time/Time.hpp

55 lines
1.7 KiB
C++

/***
Copyright (C) 2021 J Reece Wilson (a/k/a "Reece"). All rights reserved.
File: Time.hpp
Date: 2021-6-9
Author: Reece
***/
#pragma once
namespace Aurora::Time
{
static inline AuString ConvertMSToTimescaleEN(AuUInt32 ms)
{
const auto msDiv1000 = ms / 1000; // seconds
const auto msDiv1000Mod60 = msDiv1000 % 60; // remaining seconds relative to next whole minute
const auto msDiv1000Div60 = msDiv1000 / 60; // total minutes
if (ms < 1000)
{
return AuToString(ms) + "ms";
}
else if (ms < (1000 * 60))
{
auto s = msDiv1000;
auto remMs = ms % 1000;
return AuToString(s) + "." + AuToString(remMs) + "s";
}
else if (ms < (1000 * 60 * 60))
{
auto m = msDiv1000Div60;
auto remS = msDiv1000Mod60;
return AuToString(m) + "m " + AuToString(remS) + "s";
}
else if (ms < (1000 * 60 * 60 * 24))
{
auto h = msDiv1000Div60 / 60;
auto remM = msDiv1000Div60;
auto remS = msDiv1000Mod60;
return AuToString(h) + "h " + AuToString(remM) + "m " + AuToString(remS) + "s";
}
else
{
auto d = (msDiv1000Div60 / 60 / 24);
auto h = (msDiv1000Div60 / 60) - (d * 24);
auto remM = msDiv1000Div60;
auto remS = msDiv1000Mod60;
return AuToString(d) + "d " + AuToString(h) + "h " + AuToString(remM) + "m " + AuToString(remS) + "s";
}
}
}
#include "Clock.hpp"
#include "Timer.hpp"
#include "TimerHighRes.hpp"
#include "DebugBenchmark.hpp"