bool ConvertFileTimeToString(const FILETIME &ft, char *s, bool includeTime, bool includeSeconds) throw() { SYSTEMTIME st; if (!BOOLToBool(FileTimeToSystemTime(&ft, &st))) { *s = 0; return false; } unsigned val = st.wYear; if (val >= 10000) { *s++ = (char)('0' + val / 10000); val %= 10000; } { s[3] = (char)('0' + val % 10); val /= 10; s[2] = (char)('0' + val % 10); val /= 10; s[1] = (char)('0' + val % 10); s[0] = (char)('0' + val / 10); s += 4; } UINT_TO_STR_2('-', st.wMonth); UINT_TO_STR_2('-', st.wDay); if (includeTime) { UINT_TO_STR_2(' ', st.wHour); UINT_TO_STR_2(':', st.wMinute); if (includeSeconds) { UINT_TO_STR_2(':', st.wSecond); /* *s++ = '.'; unsigned val = st.wMilliseconds; s[2] = (char)('0' + val % 10); val /= 10; s[1] = (char)('0' + val % 10); s[0] = (char)('0' + val / 10); s += 3; */ } } *s = 0; return true; }
bool ConvertUtcFileTimeToString(const FILETIME &utc, char *s, int level) throw() { *s = 0; FILETIME ft; if (!FileTimeToLocalFileTime(&utc, &ft)) return false; SYSTEMTIME st; if (!BOOLToBool(FileTimeToSystemTime(&ft, &st))) return false; { unsigned val = st.wYear; if (val >= 10000) { *s++ = (char)('0' + val / 10000); val %= 10000; } s[3] = (char)('0' + val % 10); val /= 10; s[2] = (char)('0' + val % 10); val /= 10; s[1] = (char)('0' + val % 10); s[0] = (char)('0' + val / 10); s += 4; } UINT_TO_STR_2('-', st.wMonth); UINT_TO_STR_2('-', st.wDay); if (level > kTimestampPrintLevel_DAY) { UINT_TO_STR_2(' ', st.wHour); UINT_TO_STR_2(':', st.wMinute); if (level >= kTimestampPrintLevel_SEC) { UINT_TO_STR_2(':', st.wSecond); if (level > kTimestampPrintLevel_SEC) { *s++ = '.'; /* { unsigned val = st.wMilliseconds; s[2] = (char)('0' + val % 10); val /= 10; s[1] = (char)('0' + val % 10); s[0] = (char)('0' + val / 10); s += 3; } *s++ = ' '; */ { unsigned numDigits = 7; UInt32 val = (UInt32)((((UInt64)ft.dwHighDateTime << 32) + ft.dwLowDateTime) % 10000000); for (unsigned i = numDigits; i != 0;) { i--; s[i] = (char)('0' + val % 10); val /= 10; } if (numDigits > (unsigned)level) numDigits = (unsigned)level; s += numDigits; } } } } *s = 0; return true; }