*/
void icaltime_from_webform(struct icaltimetype *t, char *prefix) {
char vname[32];
- struct tm tm;
- struct icaltimetype t2;
- /* Stuff tm with zero values */
- memset(&tm, 0, sizeof(struct tm));
+ /* Stuff with zero values */
+ memset(t, 0, sizeof(struct icaltimetype));
- /* Get the year/month/date all in one shot */
- strptime((char*)BSTR(prefix), "%Y-%m-%d", &tm);
+ /* Get the year/month/date all in one shot -- it will be in ISO YYYY-MM-DD format */
+ sscanf((char*)BSTR(prefix), "%04d-%02d-%02d", &t->year, &t->month, &t->day);
/* hour */
sprintf(vname, "%s_hour", prefix);
- tm.tm_hour = IBSTR(vname);
+ t->hour = IBSTR(vname);
/* minute */
sprintf(vname, "%s_minute", prefix);
- tm.tm_min = IBSTR(vname);
+ t->minute = IBSTR(vname);
- /* now convert to icaltimetyepe */
- t2 = icaltime_from_timet_with_zone(mktime(&tm), 0, get_default_icaltimezone());
- t2.zone = get_default_icaltimezone();
- memcpy(t, &t2, sizeof(struct icaltimetype));
+ /* time zone is set to the default zone for this server */
+ t->is_utc = 0;
+ t->zone = get_default_icaltimezone();
}