0

入力として次の文字列を持っています:

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;
4

2 に答える 2

0

@ジョンはい、そうです、ここで私がZを指定する全体を行いました。タイムゾーンをGMTに設定し、それに基づいて計算された日付時刻を受け取りますが、Zを含まないが直接タイムオフセットを含むエントリはその場合はそうしますタイムゾーンを指定する必要はなく、フォーマッターが処理します。

    NSDateFormatter *sRFC3339DateFormatter = [[NSDateFormatter alloc] init];     

        if([Result rangeOfString:@"Z"].location != NSNotFound)
        {   
            Result=[Result substringToIndex:[Result length]-2];
            [sRFC3339DateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
            [sRFC3339DateFormatter setDateFormat:@"yyyyMMdd'T'HHmmss"];
         }
        else 
        {

           [sRFC3339DateFormatter setDateFormat:@"yyyyMMdd'T'HHmmssZ"];
        }

        NSDate *date = [sRFC3339DateFormatter dateFromString:Result];

        myEvent.startDate=date;

        [sRFC3339DateFormatter release];
于 2012-08-04T10:42:38.757 に答える