1

こんにちは、私は webservice で取得する時間間隔を 15 分増やす必要があります。コードは次のとおりです。

        NSString *dateString =obj.String_date_start;   // start time is 2011-07-01 
    dateString = [dateString stringByAppendingString:[NSString stringWithFormat:@" %@ +0000",obj.String_time_start]];  //After this statement the date is 2011-07-01 03:00:00 +0000
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];
    NSDate *dateFromString = [[NSDate alloc] init]; 
    dateFromString = [dateFormatter dateFromString:dateString];
    NSDate *scheduledForYellow = [dateFromString dateByAddingTimeInterval:900];
    [dateFormatter release];

    NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
    [dateFormatter1 setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];

    NSString *strTime = [dateFormatter1 stringFromDate:scheduledForYellow]; 
    [dateFormatter1 release];
    NSArray *aryy = [strTime componentsSeparatedByString:@" "];
    NSLog(@"end time ======>>>%@",[aryy objectAtIndex:1]);
    obj.String_StaticEndTime  = [aryy objectAtIndex:1];

ここで開始時間に 15 分を追加するために、上記のコードを作成しましたが、終了時間に [aryy objectAtIndex:1] を指定しても正しい時間が得られません。開始日。何が問題なのかわかりません。

`

4

1 に答える 1

2

これは、日付フォーマッタが文字列を生成するために使用するデフォルトのタイムゾーン (ローカル タイムゾーン) が原因である必要があります。日付フォーマッタを再利用するためにコードを少し変更し、dateFromString.

NSString *dateString = obj.String_date_start;   // start time is 2011-07-01 
dateString = [dateString stringByAppendingString:[NSString stringWithFormat:@" %@ +0000",obj.String_time_start]];  //After this statement the date is 2011-07-01 03:00:00 +0000
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];

NSDate * dateFromString = [dateFormatter dateFromString:dateString];
NSDate * scheduledForYellow = [dateFromString dateByAddingTimeInterval:900];

[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
NSString * strTime = [dateFormatter dateFromString:scheduledForYellow]; 

NSArray * aryy = [strTime componentsSeparatedByString:@" "];

NSLog(@"end time ======>>>%@",[aryy objectAtIndex:1]);
obj.String_StaticEndTime  = [aryy objectAtIndex:1];

これで問題が解決するはずです。問題が発生した場合はお知らせください。

于 2011-07-15T10:44:04.023 に答える