1

NSDate から現地時間を取得しようとしていますが、+0000 タイムゾーンしか出力していません。ICS ファイルからの情報を解析し、NSDateFormatter を使用して文字列 (20131001T114445Z のように見える) を日付に変換していますが、何らかの理由でユーザーの現地時間に変更できません。

関連するコードは次のとおりです-

+(ISParseICS*) icsParser
{
    if( !fetcher ) {
        fetcher = [ISParseICS new];
        fetcher.dateFormatter = [[NSDateFormatter alloc] init];
        [fetcher.dateFormatter setDateFormat:@"yyyyMMdd HHmmss"];

        NSLog(@"Created new singleton fetcher");
    }
    return fetcher;
}

-(NSMutableArray *)fetchPassesSync 内の以下のコード

// Extract date/time
        NSString *unformattedEndDateTimeString;
        NSDate *endDate;
        eventScanner = [NSScanner scannerWithString:event];
        [eventScanner scanUpToString:@"DTEND:" intoString:nil];
        [eventScanner scanUpToString:@"\n" intoString:&unformattedEndDateTimeString];

        unformattedEndDateTimeString = [unformattedEndDateTimeString stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"DTEND:"] withString:@""];
        NSLog(@"This is unformattedEndDateTimeString: %@", unformattedEndDateTimeString);
        endDate = [self dateFromString:unformattedEndDateTimeString];
        NSLog(@"End date - %@", endDate);

...そして最後のピース:

-(NSDate *)dateFromString:(NSString *)dateString {

    dateString = [dateString stringByReplacingOccurrencesOfString:@"T" withString:@" "];
    dateString = [dateString stringByReplacingOccurrencesOfString:@"Z" withString:@""];
    NSDate *date = [self.dateFormatter dateFromString:dateString];


//    NSLog(@"The output date: %@", date);


    return date;
}

私はプログラミングにかなり慣れていないので、正しく質問したことを願っています。前もって感謝します。

編集:このコードから得られるのは、文字列「20131001T114445Z」を取り、「2013-10-01 11:44:45 +0000」のように出力することです

4

1 に答える 1

1

これを試して:-

 NSString *dateStr = @"20131001T114445Z";

    // Convert string to date object
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
    [dateFormat setDateFormat:@"yyyyMMdd'T'hhmmss'Z'"];
    NSDate *date = [dateFormat dateFromString:dateStr];

    // Convert date object to desired output format
    [dateFormat setDateFormat:@"yyyy-MM-dd hh:mm:ss Z"];
    dateStr = [dateFormat stringFromDate:date];
    NSLog(@"%@",dateStr);
    [dateFormat release];
于 2013-10-03T07:14:36.747 に答える