00001 #include "define.h" 00002 00003 00004 00005 char* pst_fileTimeToAscii(const FILETIME* filetime, char* result) { 00006 time_t t; 00007 t = pst_fileTimeToUnixTime(filetime); 00008 return ctime_r(&t, result); 00009 } 00010 00011 00012 void pst_fileTimeToStructTM (const FILETIME *filetime, struct tm *result) { 00013 time_t t1; 00014 t1 = pst_fileTimeToUnixTime(filetime); 00015 gmtime_r(&t1, result); 00016 } 00017 00018 00019 time_t pst_fileTimeToUnixTime(const FILETIME *filetime) 00020 { 00021 uint64_t t = filetime->dwHighDateTime; 00022 const uint64_t bias = 11644473600LL; 00023 t <<= 32; 00024 t += filetime->dwLowDateTime; 00025 t /= 10000000; 00026 t -= bias; 00027 return ((t > (uint64_t)0x000000007fffffff) && (sizeof(time_t) <= 4)) ? 0 : (time_t)t; 00028 } 00029