我正在围绕Win32 FILETIME结构编写一个简单的包装器.boost::datetime
有我想要的大部分内容,除了我需要的任何日期类型,我最终使用Windows API插入没有问题.
为此,我决定为此做自己的事情 - 大多数操作都不是那么复杂.我现在正在实现类似TimeSpan的类型,但我不确定如何实现FileTimeToSystemTime.我可以使用系统的内置FileTimeToSystemTime函数,但FileTimeToSystemTime无法处理负日期 - 我需要能够表示类似"-12秒"的内容.
应该如何实施这样的事情?
Billy3
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();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1235 次 |
最近记录: |