如何转换为 Win32 FILETIME 或 SYSTEMTIME 的 UNIX time_t

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 167296
概要
在 UNIX 平台下名为 time_t',表示 1970 年 1 月 1,UTC (协调通用时间) 午夜以来经过的秒数是 ANSI C 运行库算术类型的窗体中维护文件的时间。

在 Win32 平台下主要中表示的数自 1601 年 1 月 1,UTC 以来的 100 个十亿分之一秒间隔 (坐标通用时间) 一个 64 位 FILETIME 结构的形式维护文件的时间。

本文说明如何将 UNIX 时间转换为其他 Win32 时间格式。
更多信息
下面的函数将一个 filetime UNIX time_t 格式转换为 Win32 FILETIME 格式。注意 time_t 是一个 32 位的值,FILETIME 是一个 64 位结构,因此,在下面的函数中使用 Win32 功能 Int32x32To64():
   #include <winbase.h>   #include <winnt.h>   #include <time.h>   void UnixTimeToFileTime(time_t t, LPFILETIME pft)   {     // Note that LONGLONG is a 64-bit value     LONGLONG ll;     ll = Int32x32To64(t, 10000000) + 116444736000000000;     pft->dwLowDateTime = (DWORD)ll;     pft->dwHighDateTime = ll >> 32;   }				
一旦 UNIX 时间转换为 FILETIME 结构,其他 Win32 时间格式可以轻松地获得使用如 FileTimeToSystemTime() 和 FileTimeToDosDateTime() 的 Win32 函数。
   void UnixTimeToSystemTime(time_t t, LPSYSTEMTIME pst)   {     FILETIME ft;     UnixTimeToFileTime(t, &ft);     FileTimeToSystemTime(&ft, pst);   }				
bse 时间 tm filetime systemtime crt

属性

文章 ID:167296 - 上次审阅时间:11/21/2006 15:45:05 - 修订版本: 3.3

Microsoft Win32 Application Programming Interface

  • kbmt kbdatetime kbhowto kbkernbase kbprogramming KB167296 KbMtzh
反馈