Objective c Sudzc未将2012-03-07T21:08:23.6875-05:00转换为NSDate
我需要使用什么格式的字符串将2012-03-07T21:08:23.6875-05:00的字符串值解析为NSDate 背景: 我正在对.NET web服务使用Sudzc ARC。web方法返回两个.NET DateTime属性。尽管这两个属性都是.NET日期时间属性,但web方法以不同的日期/时间格式返回它们 第一个日期时间的值在SQL Server中设置,并以以下格式返回值2012-03-07T21:08:23。Sudzc解析了这个很棒的…还没有问题 第二个DateTime的值由.NET设置为DateTime.Now.AddHours24。web方法将其作为值2012-03-07T21:08:23.6875-05:00返回,该值包含额外的毫秒和时区偏移量,例如:.6875-05:00。Sudzc不会将该值解析为NSDate,soap.m方法dateFromString返回一个值nil 我很确定这与NSDateFormatter有关。soap.m附带了以下内容Objective c Sudzc未将2012-03-07T21:08:23.6875-05:00转换为NSDate,objective-c,xcode,nsdate,nsdateformatter,sudzc,Objective C,Xcode,Nsdate,Nsdateformatter,Sudzc,我需要使用什么格式的字符串将2012-03-07T21:08:23.6875-05:00的字符串值解析为NSDate 背景: 我正在对.NET web服务使用Sudzc ARC。web方法返回两个.NET DateTime属性。尽管这两个属性都是.NET日期时间属性,但web方法以不同的日期/时间格式返回它们 第一个日期时间的值在SQL Server中设置,并以以下格式返回值2012-03-07T21:08:23。Sudzc解析了这个很棒的…还没有问题 第二个DateTime的值由.NET设置为
+ (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总是返回为nil。我使用它从带有sudzc的.NET web服务转换
我使用它将.NET web服务与sudzc进行转换
NSDateFormatter无法处理时区条中的:。在使用NSDateFormatter进行解析之前,您必须先删除该:。应该注意,在iOS6中,现在时区中支持:。完整格式为yyyy-MM-dd'T'HH:MM:ss.sszzzzz.NSDateFormatter无法处理时区中的:。在使用NSDateFormatter进行解析之前,您必须先删除该:。应该注意,在iOS6中,现在时区中支持:。完整格式为yyyy-MM-dd'T'HH:MM:ss.sssszzz。
ISO8601DateFormatter *isoDateFormatter = [[ISO8601DateFormatter alloc] init];
[isoDateFormatter dateFromString: ... ]