*weekday = '\0';
/* RFC3339 subset, with fraction of second */
- result = sscanf(str, "%4d-%2d-%2d%c%2d:%2d:%2d.%1d%6s",
+ result = sscanf(str, "%4d-%2d-%2d%c%2d:%2d:%2d.%d%6s",
year, &month_n, day, &sep1, hh, mm, ss, &secfract, zonestr);
- debug_print("str |%s|, result %d\n", str, result);
if (result == 9
&& (sep1 == 'T' || sep1 == 't' || sep1 == ' ')) {
if (month_n >= 1 && month_n <= 12) {
/* RFC3339 subset, no fraction of second */
result = sscanf(str, "%4d-%2d-%2d%c%2d:%2d:%2d%6s",
year, &month_n, day, &sep1, hh, mm, ss, zonestr);
- debug_print("str |%s|, result %d\n", str, result);
if (result == 8
&& (sep1 == 'T' || sep1 == 't' || sep1 == ' ')) {
if (month_n >= 1 && month_n <= 12) {
strncpy2(month, monthstr+((month_n-1)*3), 4);
- if (offset_sign == 'z' || offset_sign == 'Z') {
+ if (zonestr[0] == 'z' || zonestr[0] == 'Z') {
strcat(zone, "+00:00");
} else if (sscanf(zonestr, "%c%2d:%2d",
&offset_sign, &zone1, &zone2) == 3) {
if (procheader_scan_date_string(src, weekday, &day, month, &year,
&hh, &mm, &ss, zone) < 0) {
- g_warning("Invalid date: %s\n", src);
+ g_warning("Invalid date: %s", src);
return FALSE;
}
if ((p = strstr(monthstr, month)) != NULL)
dmonth = (gint)(p - monthstr) / 3 + 1;
else {
- g_warning("Invalid month: %s\n", month);
+ g_warning("Invalid month: %s", month);
dmonth = G_DATE_BAD_MONTH;
}
gint hh, mm, ss;
gchar zone[7];
GDateMonth dmonth = G_DATE_BAD_MONTH;
- struct tm t;
gchar *p;
time_t timer;
- time_t tz_offset;
if (procheader_scan_date_string(src, weekday, &day, month, &year,
&hh, &mm, &ss, zone) < 0) {
return 0;
}
- /* Y2K compliant :) */
- if (year < 1000) {
- if (year < 50)
- year += 2000;
- else
- year += 1900;
- }
-
month[3] = '\0';
for (p = monthstr; *p != '\0'; p += 3) {
if (!g_ascii_strncasecmp(p, month, 3)) {
}
}
+#ifdef G_OS_WIN32
+ GTimeZone *tz;
+ GDateTime *dt;
+
+ tz = g_time_zone_new(zone);
+ dt = g_date_time_new(tz, year, dmonth, day, hh, mm, ss);
+
+ timer = g_date_time_to_unix(dt);
+
+ g_date_time_unref(dt);
+ g_time_zone_unref(tz);
+
+#else
+ struct tm t;
+ time_t tz_offset;
+
+ /* Y2K compliant :) */
+ if (year < 1000) {
+ if (year < 50)
+ year += 2000;
+ else
+ year += 1900;
+ }
+
t.tm_sec = ss;
t.tm_min = mm;
t.tm_hour = hh;
if (dest)
procheader_date_get_localtime(dest, len, timer);
+#endif
return timer;
}