Пример #1
0
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
}
Пример #2
0
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;
}