FILETIME的使用
来源:互联网 发布:特朗普访华知乎 编辑:程序博客网 时间:2024/06/02 19:33
typedef struct _FILETIME {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME, *PFILETIME, *LPFILETIME;
typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME, *LPSYSTEMTIME;
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME, *LPSYSTEMTIME;
FILETIME和SYSTEMTIME都只是记录时间的结构。
GetLocalTime能够得到本地电脑设置时区的时间,得到的类型是SYSTEMTIME的类型。
常用转换函数:
LONG WINAPI CompareFileTime(const FILETIME *lpft1, const FILETIME *lpft2);
BOOL WINAPI FileTimeToSystemTime(const FILETIME *lpft, LPSYSTEMTIME lpst);
BOOL WINAPI SystemTimeToFileTime(const SYSTEMTIME *lpst, LPFILETIME lpft);
BOOL WINAPI FileTimeToLocalFileTime(const FILETIME *lpft, LPFILETIME lpftLocal);
BOOL WINAPI LocalFileTimeToFileTime(const FILETIME *lpftLocal, LPFILETIME lpft);
BOOL WINAPI FileTimeToSystemTime(const FILETIME *lpft, LPSYSTEMTIME lpst);
BOOL WINAPI SystemTimeToFileTime(const SYSTEMTIME *lpst, LPFILETIME lpft);
BOOL WINAPI FileTimeToLocalFileTime(const FILETIME *lpft, LPFILETIME lpftLocal);
BOOL WINAPI LocalFileTimeToFileTime(const FILETIME *lpftLocal, LPFILETIME lpft);
那么,如果使用FILETIME来记录时间,需要加上n秒,如何进行累加计算呢?
#define PER_SECOND 1*10*1000*1000 //1秒
ULONGLONG ullSeconds = n* PER_SECOND;
FILETIME tTime;
ULARGE_INTEGER temp;
temp.QuadPart = ullSeconds;
tTime.dwHighDateTime = temp.HighPart;
tTime.dwLowDateTime = temp.LowPart;
temp.QuadPart = ullSeconds;
tTime.dwHighDateTime = temp.HighPart;
tTime.dwLowDateTime = temp.LowPart;
依次类推,1小时就是36000000000;1天就是864000000000
说明:ULARGE_INTEGER 的结构定义如下
typedef union _ULARGE_INTEGER {
struct {
DWORD LowPart;
DWORD HighPart;
};
struct {
DWORD LowPart;
DWORD HighPart;
} u;
#endif //MIDL_PASS
ULONGLONG QuadPart;
} ULARGE_INTEGER;
struct {
DWORD LowPart;
DWORD HighPart;
};
struct {
DWORD LowPart;
DWORD HighPart;
} u;
#endif //MIDL_PASS
ULONGLONG QuadPart;
} ULARGE_INTEGER;
typedef ULARGE_INTEGER *PULARGE_INTEGER;
可以看到,它是一个64位的联合体,它的空间大小就是64位,当使用QuadPart时等于是以64位的整体来使用的;
而若使用 LowPart和 HighPart时,等于是以高低32位来使用的。
因此,temp.QuadPart = ullSeconds;是给QuadPart赋值,实际上也就是给temp的内存空间赋值了,当然也可以通过LowPart和HighPart分别取出temp的低32位和高32位了。
- FILETIME的使用
- FILETIME的使用
- FILETIME的使用
- FILETIME的使用
- 关于FILETIME的比较
- FILETIME 、SYSTEMTIME的转换
- FILETIME
- FILETIME
- 取得两个 FILETIME 的时间差
- FILETIME使用,获取文件的创建时间,修改时间和访问时间
- FileTime 和 CTime之间的转换问题
- FileTime 和 CTime之间的转换问题
- FILETIME类型的变量转换为CString
- FILETIME类型到LARGE_INTEGER类型的转换
- CTime FILETIME 与CString之间的转换
- FindFirstFile 获得的文件创建时间FILETIME 是UAC时间
- COleDateTime 的构造函数自动将FILETIME转换为Localtime
- 如何转换为 Win32 FILETIME 或 SYSTEMTIME 的 UNIX time_t
- 将Excel或CSV文件中的数据导出到DataSet
- 产品经理的主要职责
- read 系统调用剖析
- VC++ ADO连接数据库操作
- J2ME程序开发全方位基础讲解汇总
- FILETIME的使用
- C++中定义一个函数结束后自动释放的锁
- Linux下两个不同版本Mysql的安装实战
- asp.net页面事件执行顺序
- 客户端验证框架(JavaScript)推荐
- 兼具 List 和 Map 的“容器”类 ListMap
- public继承后,父类与子类访问隐藏
- 如何安装配置基于两台服务器的MySQL集群
- Post和Get的区别(兼谈页面间传值的方式)