gpt4 book ai didi

c++ - 如何实现 FileTimeToSystemTime?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:42:00 28 4
gpt4 key购买 nike

我正在围绕 Win32 FILETIME 结构编写一个简单的包装器。 boost::datetime 拥有我想要的大部分内容,除了我需要我最终使用的任何日期类型来毫无问题地插入 Windows API。

为此,我决定自己编写一些东西来执行此操作——大多数操作都没有那么复杂。我正在实现 TimeSpan - 此时类型,但我不确定我将如何实现 FileTimeToSystemTime。我可以只使用系统的内置 FileTimeToSystemTime 函数,除了 FileTimeToSystemTime 不能处理负日期——我需要能够表示类似“-12 秒”的东西。

应该如何实现这样的事情?

比利3

最佳答案

Windows SYSTEMTIME 和 FILETIME 数据类型旨在表示特定的日期和时间。它们不太适合表示时差。时间差最好用一个简单的整数表示两个 SYSTEMTIME 或 FILETIME 之间的数目。可能是秒,如果您需要更高的精度,则可能更短。

如果您需要向用户显示差异,可以使用简单的除法和模数来计算组件。

std::string PrintTimeDiff(int nSecDiff)
{
std::ostringstream os;

if (nSecDiff<0)
{
os << "-";
nSecDiff= -nSecDiff;
}
int nSeconds = nSecDiff % (24*60*60);
nSecDiff /= 60;
int nMinutes = nSecDiff % (24*60)
nSecDiff /= 60;
int nHours = nSecDiff % 24;
int nDays = nSecDiff / 24;

os << nDays << " Days " << nHours << ":" << nMinutes << ":" << nSeconds;
return os .str();
}

关于c++ - 如何实现 FileTimeToSystemTime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3051042/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com