time_t wce_getYdayFromSYSTEMTIME(const SYSTEMTIME* s) { __int64 t; FILETIME f1, f2; f1 = wce_getFILETIMEFromYear( s->wYear ); SystemTimeToFileTime( s, &f2 ); t = wce_FILETIME2int64(f2)-wce_FILETIME2int64(f1); return (time_t)((t/_onesec_in100ns)/(60*60*24)); }
static time_t wce_FILETIME2time_t(const FILETIME* f) { FILETIME f1601, f1970; __int64 t, offset; f1601 = wce_getFILETIMEFromYear(1601); f1970 = wce_getFILETIMEFromYear(1970); offset = wce_FILETIME2int64(f1970) - wce_FILETIME2int64(f1601); t = wce_FILETIME2int64(*f); t -= offset; return (time_t)(t / _onesec_in100ns); }
time_t mktime(struct tm* pt) { SYSTEMTIME ss, ls, s; FILETIME sf, lf, f; __int64 diff; GetSystemTime(&ss); GetLocalTime(&ls); SystemTimeToFileTime( &ss, &sf ); SystemTimeToFileTime( &ls, &lf ); diff = (wce_FILETIME2int64(lf)-wce_FILETIME2int64(sf))/_onesec_in100ns; s = wce_tm2SYSTEMTIME(pt); SystemTimeToFileTime( &s, &f ); return wce_FILETIME2time_t(&f) - (time_t)diff; }
FILETIME wce_time_t2FILETIME(const time_t t) { FILETIME f, f1970; __int64 time; f1970 = wce_getFILETIMEFromYear(1970); time = t; time *= _onesec_in100ns; time += wce_FILETIME2int64(f1970); f = wce_int642FILETIME(time); return f; }