我需要使用什麼格式字符串來解析字符串值「2012-03-07T21:08:23.6875-05:00 「成NSDate?Sudzc沒有將2012-03-07T21:08:23.6875-05:轉換爲NSDate
背景:
我正在使用Sudzc ARC對.NET Web服務。 Web方法返回兩個.NET DateTime屬性。雖然兩者都是.NET DateTime屬性,但Web方法將以不同的日期/時間格式返回它們。
第一個DateTime的值在SQL Server中設置並返回一個格式爲「2012-03-07T21:08:23」的值。 Sudzc分析這個偉大的...沒有問題。
第二個DateTime的值由.NET設置爲DateTime.Now.AddHours(24)。 web方法返回值爲「2012-03-07T21:08:23.6875-05:00」,其中包含額外的毫秒數和時區偏移量(例如:「.6875-05:00」)。 Sudzc不會將此值解析到NSDate中,並且soap.m方法的dateFromString返回值爲nil。
我很確定這與NSDateFormater有關。 soap.m自帶下面...
+ (NSDateFormatter*)dateFormatter {
static NSDateFormatter* formatter;
if(formatter == nil) {
formatter = [[NSDateFormatter alloc] init];
NSLocale* enUS = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[formatter setLocale: enUS];
[formatter setLenient: YES];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS"];
}
return formatter;
}
// Converts a string to a date.
+ (NSDate*) dateFromString: (NSString*) value {
if([value rangeOfString:@"T"].length != 1) {
value = [NSString stringWithFormat:@"%@T00:00:00.000", value];
}
if([value rangeOfString:@"."].length != 1) {
value = [NSString stringWithFormat:@"%@.000", value];
}
if(value == nil || [value isEqualToString:@""]) { return nil; }
NSDate* outputDate = [[Soap dateFormatter] dateFromString: value];
return outputDate;
}
我試圖從修改格式字符串 「YYYY-MM-dd'T'HH:MM:SS.SSS」 到「YYYY-MM- dd'T'HH:mm:ss.SSSSSS-zz:zz「和其他變體,但NSDate總是返回爲零。
NSDateFormatter無法處理 「:」 在時區片。您必須在使用NSDateFormatter解析之前刪除該「:」。 – 2012-03-07 02:27:29
應該注意的是,在iOS6中,現在支持時區中的「:」。完整格式爲「yyyy-MM-dd'T'HH:mm:ss.SSSSZZZZZ」。 – 2013-10-09 11:34:27