ISO 8601タイムスタンプをNSDate
. を使用しようとしましたが、タイムスタンプの末尾に表示されるUTC時間オフセットでNSDateFormatter
動作させることができません。説明するために、次のようなタイムスタンプを:に変換したいと思います。私の質問は、「-06:00」の部分をどのように処理すればよいですか? 日付形式文字列として使用しようとしましたが、機能しません。助言がありますか?NSDate
2011-03-03T06:00:00-06:00
yyyy-MM-dd'T'HH:mm:ssZ
質問する
17901 次
6 に答える
18
私の場合、次のようなものを受け取りました。
"2015-05-07T16:16:47.054403Z"
そして、私は使用しなければなりませんでした:
"yyyy'-'MM'-'dd'T'HH':'mm':'ss.SSSZ"
于 2015-05-12T11:37:45.873 に答える
5
問題は:
、タイムゾーンオフセット内の文字です。そのコロンだけを明示的に削除することも、すべてのコロンを削除してから続行することもできます。例えば:
NSString *s = @"2011-03-03T06:00:00-06:00";
s = [s stringByReplacingOccurrencesOfString:@":" withString:@""];
NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setDateFormat:@"yyyy-MM-dd'T'HHmmssZZ"];
NSDate *d = [f dateFromString:s];
NSLog(@"%@", d);
このログ:
EmptyFoundation[5088:707] 2011-03-03 12:00:00 +0000
于 2011-09-17T16:11:52.933 に答える
4
これが私が使用する方法です:
-(NSDate *)dateFromISO8601String:(NSString *)dateString{
if (!dateString) return nil;
if ([dateString hasSuffix:@"Z"]) {
dateString = [[dateString substringToIndex:(dateString.length-1)] stringByAppendingString:@"-0000"];
}
dateString = [dateString stringByReplacingOccurrencesOfString:@":" withString:@""];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
dateFormatter.dateFormat = @"yyyy-MM-dd'T'HHmmssZ";
return [dateFormatter dateFromString:dateString];
}
于 2012-09-22T15:18:49.740 に答える