1

嗨,我需要在网络服务中增加 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] 并没有给我正确的时间。我想要做的是在我得到的任何日期增加 15 分钟在开始日期。不知道问题是什么。

`

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 回答