Piotr Caban piotr.caban@gmail.com writes:
@@ -221,6 +253,62 @@ static inline DOUBLE week_day(DOUBLE time) return ret; }
+static inline DOUBLE convert_time(int year, SYSTEMTIME st) +{
- DOUBLE time;
- int set_week_day;
- time = time_from_year(year);
- time += (DOUBLE)day_from_month(st.wMonth-1, in_leap_year(time)) * MS_PER_DAY;
- set_week_day = st.wDayOfWeek-week_day(time);
- if(set_week_day < 0)
set_week_day += 7;
- time += set_week_day * MS_PER_DAY;
- time += (DOUBLE)(st.wDay-1) * 7 * MS_PER_DAY;
- if(month_from_time(time) != st.wMonth-1)
time -= 7 * MS_PER_DAY;
- time += st.wHour * MS_PER_HOUR;
- time += st.wMinute * MS_PER_MINUTE;
- return time;
+}
You should use SystemTimeToFileTime or some similar function, no need to reinvent the wheel.
Alexandre Julliard wrote:
Piotr Caban piotr.caban@gmail.com writes:
@@ -221,6 +253,62 @@ static inline DOUBLE week_day(DOUBLE time) return ret; }
+static inline DOUBLE convert_time(int year, SYSTEMTIME st) +{
- DOUBLE time;
- int set_week_day;
- time = time_from_year(year);
- time += (DOUBLE)day_from_month(st.wMonth-1, in_leap_year(time)) * MS_PER_DAY;
- set_week_day = st.wDayOfWeek-week_day(time);
- if(set_week_day < 0)
set_week_day += 7;
- time += set_week_day * MS_PER_DAY;
- time += (DOUBLE)(st.wDay-1) * 7 * MS_PER_DAY;
- if(month_from_time(time) != st.wMonth-1)
time -= 7 * MS_PER_DAY;
- time += st.wHour * MS_PER_HOUR;
- time += st.wMinute * MS_PER_MINUTE;
- return time;
+}
You should use SystemTimeToFileTime or some similar function, no need to reinvent the wheel.
In this case SYSTEMTIME keeps information returned by GetTimeZoneInformation. It's used to store informations about daylight/standard time adjustment. Because there's no ordinary date SystemTimeToFileTime can't be used.
Piotr Caban piotr.caban@gmail.com writes:
Alexandre Julliard wrote:
You should use SystemTimeToFileTime or some similar function, no need to reinvent the wheel.
In this case SYSTEMTIME keeps information returned by GetTimeZoneInformation. It's used to store informations about daylight/standard time adjustment. Because there's no ordinary date SystemTimeToFileTime can't be used.
I see, that makes sense. You do need to check that the year is 0 though, because otherwise it's still a normal date format.