1

我的情况涉及手动重建原始数据,包括 MFT 记录和其他 Windows 工件。我知道 MFT 记录中的时间戳是 64 位整数、大端序,并且是通过自 01/01/1601 00:00:00 UTC 以来的 100 纳秒间隔数计算的。我也熟悉 Windows 电子邮件标题时间戳,它由两个 32 位值组成,它们组合形成一个 64 位值,也是从 01/01/1601 00:00:00 UTC 以来的 100 纳秒间隔数计算的.

但是还有其他具有不同纪元的 Windows 时间戳,例如 SQL Server 时间戳,我相信它使用 1800 年代的日期。我找不到关于所有这些的太多文档。除了上面列出的两个之外,Windows 中还使用了哪些时间戳?你如何分解它们?

4

1 回答 1

1

下面是一些解码 Windows 时间戳的代码:

static string microsoftDateToISODate(const uint64_t &time) {
/**
 * See comment above for more information on
 * SECONDS_BETWEEN_WIN32_EPOCH_AND_UNIX_EPOCH 
 *
 * Convert UNIX time_t to ISO8601 format
 */
time_t tmp = (time / ONE_HUNDRED_NANO_SEC_TO_SECONDS)
    - SECONDS_BETWEEN_WIN32_EPOCH_AND_UNIX_EPOCH;

struct tm time_tm;
gmtime_r(&tmp, &time_tm);
char buf[256];
strftime(buf, sizeof(buf), "%Y-%m-%dT%H:%M:%S", &time_tm);
return string(buf);
}

您对 Mac 时间戳的参考是:

于 2011-08-07T03:24:26.573 回答