能力值:
( LV9,RANK:850 )
2 楼
FileTime--->FileLocalTime--->SystemTime
004030AC DB 07 05 00 01 00 17 00 01 00 38 00 3A 00 00 00 ?....8.:...
004030BC 00 11 EB B2 EC 18 CC 01 .氩??...
00401000 > 68 00304000 push 00403000
00401005 E8 46000000 call <jmp.&kernel32.GetTimeZoneInformatio>
0040100A B8 0011EBB2 mov eax, 0xB2EB1100
0040100F BA EC18CC01 mov edx, 0x1CC18EC
00401014 A3 BC304000 mov dword ptr [0x4030BC], eax
00401019 8915 C0304000 mov dword ptr [0x4030C0], edx
0040101F 68 AC304000 push 004030AC
00401024 68 BC304000 push 004030BC
00401029 E8 1C000000 call <jmp.&kernel32.FileTimeToSystemTime>
0040102E 68 BC304000 push 004030BC
00401033 68 AC304000 push 004030AC
00401038 E8 19000000 call <jmp.&kernel32.SystemTimeToFileTime>
0040103D 6A 00 push 0x0
0040103F E8 00000000 call <jmp.&kernel32.ExitProcess>
00401044 - FF25 04204000 jmp dword ptr [<&kernel32.ExitProcess>] ; kernel32.ExitProcess
0040104A - FF25 08204000 jmp dword ptr [<&kernel32.FileTimeToSyst>; kernel32.FileTimeToSystemTime
00401050 - FF25 0C204000 jmp dword ptr [<&kernel32.GetTimeZoneInf>; kernel32.GetTimeZoneInformation
00401056 - FF25 00204000 jmp dword ptr [<&kernel32.SystemTimeToFi>; kernel32.SystemTimeToFileTime
能力值:
( LV4,RANK:50 )
3 楼
[QUOTE='wofan[OCN];995349']FileTime--->FileLocalTime--->SystemTime
004030AC DB 07 05 00 01 00 17 00 01 00 38 00 3A 00 00 00 ?....8.:...
004030BC 00 11 EB B2 EC 18 CC ...[/QUOTE]
非常感谢大牛点拨,原来GetFileTime通过FILETIME数据结构获取的数据是UTC时间,所以我怎么改时区然后通过FileTimeToSystemTime函数得到的都是UTC时间
应该使用FileTimeToLocalTime函数先将时间转化为本地时间,比如我的机器是北京时区,也就是会将FILETIME加上8个小时
最后再使用FileTimeToSystemTime得到当前系统的时间,如果我的时区修改为+7或者其它情况,最终得到的值就是正确的了!!
也就是大牛所说的:FileTime--->FileLocalTime--->SystemTime