MIR_CORE_DLL(int) TimeZone_PrintTimeStamp(HANDLE hTZ, mir_time ts, LPCTSTR szFormat, LPTSTR szDest, size_t cbDest, DWORD dwFlags) { MIM_TIMEZONE *tz = (MIM_TIMEZONE*)hTZ; if (tz == NULL && (dwFlags & (TZF_DIFONLY | TZF_KNOWNONLY))) return 1; if (tz == NULL) tz = &myInfo.myTZ; FILETIME ft; if (tz == UTC_TIME_HANDLE) UnixTimeToFileTime(ts, &ft); else { if (tz->offset == INT_MIN) CalcTsOffset(tz); UnixTimeToFileTime(ts + tz->offset, &ft); } SYSTEMTIME st; FileTimeToSystemTime(&ft, &st); FormatTime(&st, szFormat, szDest, cbDest); return 0; }
static int timeapiPrintTimeStamp(HANDLE hTZ, time_t ts, LPCTSTR szFormat, LPTSTR szDest, int cbDest, DWORD dwFlags) { MIM_TIMEZONE *tz = (MIM_TIMEZONE*)hTZ; if (tz == NULL && (dwFlags & (TZF_DIFONLY | TZF_KNOWNONLY))) return 1; FILETIME ft; if (tz == NULL) tz = &myInfo.myTZ; if (tz == NULL) { FILETIME lft; UnixTimeToFileTime(ts, &lft); FileTimeToLocalFileTime(&lft, &ft); } else if (tz == UTC_TIME_HANDLE) UnixTimeToFileTime(ts, &ft); else { if (tz->offset == INT_MIN) CalcTsOffset(tz); UnixTimeToFileTime(ts + tz->offset, &ft); } SYSTEMTIME st; FileTimeToSystemTime(&ft, &st); FormatTime(&st, szFormat, szDest, cbDest); return 0; }
MIR_CORE_DLL(mir_time) TimeZone_UtcToLocal(HANDLE hTZ, mir_time ts) { MIM_TIMEZONE *tz = (MIM_TIMEZONE*)hTZ; if (tz == NULL) tz = &myInfo.myTZ; if (tz == UTC_TIME_HANDLE) return ts; if (tz->offset == INT_MIN) CalcTsOffset(tz); return ts + tz->offset; }
static time_t timeapiTimeStampToTimeZoneTimeStamp(HANDLE hTZ, time_t ts) { MIM_TIMEZONE *tz = (MIM_TIMEZONE*)hTZ; if (tz == NULL) tz = &myInfo.myTZ; if (tz == NULL) { FILETIME ft, lft; UnixTimeToFileTime(ts, &ft); FileTimeToLocalFileTime(&ft, &lft); return FileTimeToUnixTime(&lft); } else if (tz == UTC_TIME_HANDLE) return ts; if (tz->offset == INT_MIN) CalcTsOffset(tz); return ts + tz->offset; }