Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c Sudzc未将2012-03-07T21:08:23.6875-05:00转换为NSDate_Objective C_Xcode_Nsdate_Nsdateformatter_Sudzc - Fatal编程技术网

Objective c Sudzc未将2012-03-07T21:08:23.6875-05:00转换为NSDate

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设置为

我需要使用什么格式的字符串将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附带了以下内容

+ (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: ... ]