timeconv.c

Go to the documentation of this file.
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 

Generated on 26 Mar 2020 for 'LibPst' by  doxygen 1.6.1