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 size_t pst_fileTimeToString(const FILETIME* filetime, const char* date_format, char* result) { 00012 time_t t; 00013 t = pst_fileTimeToUnixTime(filetime); 00014 return strftime(result, MAXDATEFMTLEN-1, date_format, localtime(&t)); 00015 } 00016 00017 void pst_fileTimeToStructTM (const FILETIME *filetime, struct tm *result) { 00018 time_t t1; 00019 t1 = pst_fileTimeToUnixTime(filetime); 00020 gmtime_r(&t1, result); 00021 } 00022 00023 00024 time_t pst_fileTimeToUnixTime(const FILETIME *filetime) 00025 { 00026 uint64_t t = filetime->dwHighDateTime; 00027 const uint64_t bias = 11644473600LL; 00028 t <<= 32; 00029 t += filetime->dwLowDateTime; 00030 t /= 10000000; 00031 t -= bias; 00032 return ((t > (uint64_t)0x000000007fffffff) && (sizeof(time_t) <= 4)) ? 0 : (time_t)t; 00033 } 00034