/* * Copyright 2009 The Android Open Source Project * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "SkTime.h" void SkTime::GetDateTime(DateTime* dt) { if (dt) { SYSTEMTIME st; TIME_ZONE_INFORMATION timeZoneInfo; int tz_bias; GetLocalTime(&st); // https://gist.github.com/wrl/8924636 switch (GetTimeZoneInformation(&timeZoneInfo)) { case TIME_ZONE_ID_STANDARD: tz_bias = -timeZoneInfo.Bias - timeZoneInfo.StandardBias; break; case TIME_ZONE_ID_DAYLIGHT: tz_bias = -timeZoneInfo.Bias - timeZoneInfo.DaylightBias; break; default: tz_bias = -timeZoneInfo.Bias; break; } dt->fTimeZoneMinutes = SkToS16(tz_bias); dt->fYear = st.wYear; dt->fMonth = SkToU8(st.wMonth); dt->fDayOfWeek = SkToU8(st.wDayOfWeek); dt->fDay = SkToU8(st.wDay); dt->fHour = SkToU8(st.wHour); dt->fMinute = SkToU8(st.wMinute); dt->fSecond = SkToU8(st.wSecond); } } SkMSec SkTime::GetMSecs() { FILETIME ft; LARGE_INTEGER li; GetSystemTimeAsFileTime(&ft); li.LowPart = ft.dwLowDateTime; li.HighPart = ft.dwHighDateTime; __int64 t = li.QuadPart; /* In 100-nanosecond intervals */ return (SkMSec)(t / 10000); /* In milliseconds */ }