OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2009 The Android Open Source Project | 3 * Copyright 2009 The Android Open Source Project |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 | 8 |
9 | 9 |
10 #include "SkTime.h" | 10 #include "SkTime.h" |
11 | 11 |
12 void SkTime::GetDateTime(DateTime* dt) | 12 void SkTime::GetDateTime(DateTime* dt) |
13 { | 13 { |
14 if (dt) | 14 if (dt) |
15 { | 15 { |
16 SYSTEMTIME st; | 16 SYSTEMTIME st; |
17 GetSystemTime(&st); | 17 TIME_ZONE_INFORMATION timeZoneInfo; |
18 | 18 int tz_bias; |
| 19 GetLocalTime(&st); |
| 20 // https://gist.github.com/wrl/8924636 |
| 21 switch (GetTimeZoneInformation(&timeZoneInfo)) { |
| 22 case TIME_ZONE_ID_STANDARD: |
| 23 tz_bias = -timeZoneInfo.Bias - timeZoneInfo.StandardBias; |
| 24 break; |
| 25 case TIME_ZONE_ID_DAYLIGHT: |
| 26 tz_bias = -timeZoneInfo.Bias - timeZoneInfo.DaylightBias; |
| 27 break; |
| 28 default: |
| 29 tz_bias = -timeZoneInfo.Bias; |
| 30 break; |
| 31 } |
| 32 dt->fTimeZoneMinutes = SkToS16(tz_bias); |
19 dt->fYear = st.wYear; | 33 dt->fYear = st.wYear; |
20 dt->fMonth = SkToU8(st.wMonth); | 34 dt->fMonth = SkToU8(st.wMonth); |
21 dt->fDayOfWeek = SkToU8(st.wDayOfWeek); | 35 dt->fDayOfWeek = SkToU8(st.wDayOfWeek); |
22 dt->fDay = SkToU8(st.wDay); | 36 dt->fDay = SkToU8(st.wDay); |
23 dt->fHour = SkToU8(st.wHour); | 37 dt->fHour = SkToU8(st.wHour); |
24 dt->fMinute = SkToU8(st.wMinute); | 38 dt->fMinute = SkToU8(st.wMinute); |
25 dt->fSecond = SkToU8(st.wSecond); | 39 dt->fSecond = SkToU8(st.wSecond); |
26 } | 40 } |
27 } | 41 } |
28 | 42 |
29 SkMSec SkTime::GetMSecs() | 43 SkMSec SkTime::GetMSecs() |
30 { | 44 { |
31 FILETIME ft; | 45 FILETIME ft; |
32 LARGE_INTEGER li; | 46 LARGE_INTEGER li; |
33 GetSystemTimeAsFileTime(&ft); | 47 GetSystemTimeAsFileTime(&ft); |
34 li.LowPart = ft.dwLowDateTime; | 48 li.LowPart = ft.dwLowDateTime; |
35 li.HighPart = ft.dwHighDateTime; | 49 li.HighPart = ft.dwHighDateTime; |
36 __int64 t = li.QuadPart; /* In 100-nanosecond intervals */ | 50 __int64 t = li.QuadPart; /* In 100-nanosecond intervals */ |
37 return (SkMSec)(t / 10000); /* In milliseconds */ | 51 return (SkMSec)(t / 10000); /* In milliseconds */ |
38 } | 52 } |
OLD | NEW |