入力として次の文字列を持っています:
BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
SUMMARY;CHARSET=utf-8:hello
LOCATION;CHARSET=utf-8:loc
DTSTART:20120704T053000Z
DTEND:20120704T073000Z
END:VEVENT
END:VCALENDAR
私が直面している問題は、私が使用している日付部分にあります:
NSRange end = [Result rangeOfString:@"T"];
NSString *DT=[NSString stringWithFormat:@"%@%@",[Result substringToIndex:end.location],[Result substringFromIndex:end.location+1]];
NSDateFormatter *formatter=[[NSDateFormatter alloc] init];
[formatter setTimeZone:[NSTimeZone defaultTimeZone]];
[formatter setDateFormat:@"yyyyMMddHHmmssZ"];
NSDate *dt=[formatter dateFromString:DT];
myEvent.startDate=dt;
[formatter release];
dt
ここで戻り値は NULL です。何が間違っていますか?
更新されたコード: 次のようにコードを更新しました。日付を取得できるようになりましたが、ロケールまたはタイムゾーンを設定する必要がありますか??
[NSTimeZone resetSystemTimeZone];
NSLocale *enUSPOSIXLocale;
NSDateFormatter *sRFC3339DateFormatter = [[NSDateFormatter alloc] init];
if( [Result characterAtIndex:[Result length]-2] == 'Z')
{
NSLog(@"in 1");
[sRFC3339DateFormatter setDateFormat:@"yyyyMMdd'T'HHmmss"];
}
else
{
NSLog(@"in 2");
[sRFC3339DateFormatter setDateFormat:@"yyyyMMdd'T'HHmmssZ"];
}
NSDate *date = [sRFC3339DateFormatter dateFromString:[Result substringToIndex:[Result length]-2]];
myEvent.startDate=date;