2012-03-07 5 views
2

「2012-03-07T21:08:23.6875-05:00」の文字列値を解析するために使用する形式文字列"NSDateに?SudzcがNSDateに変換する2012-03-07T21:08:23.6875-05:00

背景:

私は.NET Webサービスに対してSudzc ARCを使用しています。 Webメソッドは、2つの.NET DateTimeプロパティを返します。どちらも.NETのDateTimeプロパティですが、Webメソッドはそれらを異なる日付/時刻形式で返します。

最初のDateTimeの値はSQL Server内で設定され、この形式の値 "2012-03-07T21:08:23"を返します。 Sudzcはこの素晴らしい...まだ問題は解析しません。

第2のDateTimeの値は、.NETによってDateTime.Now.AddHours(24)として設定されます。 Webメソッドは、追加のミリ秒とタイムゾーンオフセット(例: ".6875-05:00")を含む "2012-03-07T21:08:23.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; 
} 

Iから書式文字列を変更しようとしてきました...以下が付属しています "YYYY-MM-dd'T'HH:MM:SS.SSS" を「YYYY-MM- dd'T'HH:mm:ss.SSSSS-zz:zz "と他の亜種ですが、NSDateは常にnilとして返されます。

+0

sudzcで.NET Webサービスから変換するために、これを使用する "を:" タイムゾーンピースに。 NSDateFormatterで解析する前に ":"を削除する必要があります。 –

+1

iOS6では、タイムゾーンの ":"がサポートされていることに注意してください。フルフォーマットは "yyyy-MM-dd'T'HH:mm:ss.SSSSZZZZZ"です。 –

答えて

関連する問題