'LibPst'
timeconv.c
Go to the documentation of this file.
1 #include "define.h"
2 
3 
4 
5 char* pst_fileTimeToAscii(const FILETIME* filetime, char* result) {
6  time_t t;
7  t = pst_fileTimeToUnixTime(filetime);
8  return ctime_r(&t, result);
9 }
10 
11 size_t pst_fileTimeToString(const FILETIME* filetime, const char* date_format, char* result) {
12  time_t t;
13  t = pst_fileTimeToUnixTime(filetime);
14  return strftime(result, MAXDATEFMTLEN-1, date_format, localtime(&t));
15 }
16 
17 void pst_fileTimeToStructTM (const FILETIME *filetime, struct tm *result) {
18  time_t t1;
19  t1 = pst_fileTimeToUnixTime(filetime);
20  gmtime_r(&t1, result);
21 }
22 
23 
24 time_t pst_fileTimeToUnixTime(const FILETIME *filetime)
25 {
26  uint64_t t = filetime->dwHighDateTime;
27  const uint64_t bias = 11644473600LL;
28  t <<= 32;
29  t += filetime->dwLowDateTime;
30  t /= 10000000;
31  t -= bias;
32  return ((t > (uint64_t)0x000000007fffffff) && (sizeof(time_t) <= 4)) ? 0 : (time_t)t;
33 }
34 
#define MAXDATEFMTLEN
Definition: define.h:259
void pst_fileTimeToStructTM(const FILETIME *filetime, struct tm *result)
Convert a FILETIME to unix struct tm.
Definition: timeconv.c:17
time_t pst_fileTimeToUnixTime(const FILETIME *filetime)
Convert a FILETIME to unix time_t value.
Definition: timeconv.c:24
uint32_t dwLowDateTime
Definition: common.h:28
uint32_t dwHighDateTime
Definition: common.h:29
size_t pst_fileTimeToString(const FILETIME *filetime, const char *date_format, char *result)
Convert a FILETIME to string in date_format format.
Definition: timeconv.c:11
char * pst_fileTimeToAscii(const FILETIME *filetime, char *result)
Convert a FILETIME to ascii printable local time.
Definition: timeconv.c:5