DateTime in managed languages has a very comprehensive set of methods that make working with it very easy, C++/CX not so much. Some answers on stackoverflow suggest using ATL and all kinds of other very complicated solutions. Here is my entry into this fight, if I can convert DateTime -> std::chrono::seconds and std::chrono::seconds -> DateTime then I can use the entirely reasonable set of functions that surrounds std::chrono.
DateTime toFileTime(std::chrono::seconds sec)
{
long long unixTime = sec.count();
DateTime result;
result.UniversalTime = unixTime * 10000000ULL + 116444736000000000LL;
return result;
}
std::chrono::seconds toDuration(DateTime dt)
{
return std::chrono::seconds((dt.UniversalTime - 116444736000000000LL) / 10000000ULL);
}
Now this is assuming that seconds is a duration from Unix epoch, you can easily get the current distance from epoch using time(nullptr) or std::chrono::system_clock::now().time_since_epoch().count()
No comments:
Post a Comment