wi_date_t * wi_date_init_with_iso8601_string(wi_date_t *date, wi_string_t *string) { if(wi_string_length(string) < _WI_DATE_ISO8601_STRING_SIZE) { wi_release(date); return NULL; } #ifdef HAVE_GLIBC string = wi_string_by_deleting_characters_in_range(string, wi_make_range(19, 6)); return wi_date_init_with_string(date, string, WI_STR("%Y-%m-%dT%H:%M:%S")); #else string = wi_string_by_deleting_characters_in_range(string, wi_make_range(22, 1)); return wi_date_init_with_string(date, string, WI_STR("%Y-%m-%dT%H:%M:%S%z")); #endif }
wi_date_t * wi_date_init_with_rfc3339_string(wi_date_t *date, wi_string_t *string) { wi_mutable_string_t *fullstring; wi_string_t *timezone; if(wi_string_length(string) >= 19) { fullstring = wi_autorelease(wi_mutable_copy(string)); timezone = wi_string_substring_from_index(fullstring, 19); if(wi_is_equal(timezone, WI_STR("Z"))) { wi_mutable_string_delete_characters_in_range(fullstring, wi_make_range(19, 1)); return wi_date_init_with_string(date, fullstring, WI_STR("%Y-%m-%dT%H:%M:%S")); } else if(wi_string_length(timezone) == 6) { wi_mutable_string_delete_characters_in_range(fullstring, wi_make_range(22, 1)); return wi_date_init_with_string(date, fullstring, WI_STR("%Y-%m-%dT%H:%M:%S%z")); } } wi_release(date); return NULL; }