0
サーバーは、カレンダーにエントリを追加するために使用される2012-04-30T10:00:00(文字列として)の形式で日付を送信しています。私はカレンダーイベントの開始日を設定するために使用されるNSDateに文字列から日付を変換するために、次のコードを使用しています。Zを使用し、Zを使用しないでRFC3339日付を処理する方法は?
2012-04-30T10:00:00と2012-04-30T10:00:00Zの両方のエントリがカレンダー内で同時に追加されています。 Zが存在する場合、UTC時間として追加されるか、または存在しない場合は現地時間として追加されるように、どうすればよいですか?
+ (NSDate*) convertDate: (NSString*) fromString
{
[NSTimeZone resetSystemTimeZone];
NSLocale *enUSPOSIXLocale;
NSDateFormatter *sRFC3339DateFormatter = [[NSDateFormatter alloc] init];
enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[sRFC3339DateFormatter setLocale:enUSPOSIXLocale];
[sRFC3339DateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"];
[sRFC3339DateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
NSDate *date = [sRFC3339DateFormatter dateFromString:fromString];
return date;
}
両方の日付が来るこれは、トリックを行いますつまり2012-04-30T10:00:00と2012-04-30T10:00:00Zが同じ時間(午前3時に表示される)のカレンダーに追加されます。 – Gruntcakes
はい、Zが存在するかどうかに応じて、タイムゾーンをUTCまたはシステムのタイムゾーンに設定する必要があります。私の更新された答えを見てください。 – zpasternack