DateTime DateTimeAdapter::ToUTC( DateTime value ) { int hour = value.hour(), day = value.day(), month = value.month(), year = value.year(), dow = value.dayOfWeek() - 1; int daylightSavingOffset = IsDaylightSaving(day, month, year, dow) ? -1 : 0; int timeZoneOffset = System::DT_getTimeZoneOffset(); int offset = timeZoneOffset + daylightSavingOffset; AddHours( &hour, &day, &month, &year, -offset ); return DateTime(year, month, day, hour, value.minute(), value.second()); }
/* ** Convert from suppled SYSTEMTIME structure to a tm */ RTEXP struct tm *tm_struct_from_systime( SYSTEMTIME *systime ) { static struct tm gtm; int m; gtm.tm_sec = systime->wSecond; gtm.tm_min = systime->wMinute; gtm.tm_hour = systime->wHour; gtm.tm_mday = systime->wDay; gtm.tm_mon = systime->wMonth -1; gtm.tm_year = systime->wYear - 1900; gtm.tm_wday = systime->wDayOfWeek; gtm.tm_yday = 0; m = 1; while(m < systime->wMonth) gtm.tm_yday += DaysInMonth(m++, systime->wYear); gtm.tm_yday += (systime->wDay -1); gtm.tm_isdst = IsDaylightSaving(>m); return >m; }