解决时间相差8小时 && 与当前时间相差n个月、n天的代码

按照一贯的做法 代码如下

- (NSString *)getNowDate{
    
    NSDate *date = [NSDate date];
    NSTimeZone *zone = [NSTimeZone systemTimeZone];
    NSInteger interval = [zone secondsFromGMTForDate: date];
    NSDate *nowDate = [date  dateByAddingTimeInterval: interval];
    
    NSDateFormatter  *dateformatter = [[NSDateFormatter alloc] init];
    [dateformatter setDateFormat:@"YYYY-MM-dd"];
    NSString *  locationString =[dateformatter  stringFromDate:nowDate];
    return locationString;
    
}

我以为这样就行了  但是当北京(亚洲-上海)时间 过了16点  就显示另一天的了

这样肯定是不行的   因为很多时候我们需要的是查询当天的数据  在网上找了下  发现少了一句代码

解决办法

- (NSString *)getNowDate{

    NSDate *date = [NSDate date];
    NSTimeZone *zone = [NSTimeZone systemTimeZone];
    NSInteger interval = [zone secondsFromGMTForDate: date];
    NSDate *nowDate = [date  dateByAddingTimeInterval: interval];
    
    NSDateFormatter  *dateformatter = [[NSDateFormatter alloc] init];
    [dateformatter setDateFormat:@"YYYY-MM-dd"];
    [dateformatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
    NSString *  locationString =[dateformatter  stringFromDate:nowDate];
    return locationString;
    
}

做项目时  经常发现需要查询一个月、三个月 或者半年的数据  与时间打交道  绕来绕去的确实烦   如下代码  复制粘贴  好用

//比当前日期少三个月
- (NSDate *)getDate{
    
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDate *now = [NSDate date];  //当前时间
    
    
    NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:now];
    NSDate *startDate = [calendar dateFromComponents:components];  //今天0点时间
    NSDate *endDate = [calendar dateByAddingUnit:NSCalendarUnitMonth value:-3 toDate:startDate options:0];
    
    //    NSDate *date = [NSDate date];
    NSTimeZone *zone = [NSTimeZone systemTimeZone];
    NSInteger interval = [zone secondsFromGMTForDate: endDate];
    NSDate *lastDate = [endDate  dateByAddingTimeInterval: interval];//三个月之前的日期
    
    return lastDate;
}


当然 根据这个方法  我们不难得出另外的  例如 比当前日期少3天  少一个星期   代码如下

//比当前日期少一个星期
- (NSDate *)getToSevenDay{
    
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDate *now = [NSDate date];  //当前时间
    
    
    NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:now];
    NSDate *startDate = [calendar dateFromComponents:components];  //今天0点时间
    NSDate *endDate = [calendar dateByAddingUnit:NSCalendarUnitDay value:-7 toDate:startDate options:0];
    
    //    NSDate *date = [NSDate date];
    NSTimeZone *zone = [NSTimeZone systemTimeZone];
    NSInteger interval = [zone secondsFromGMTForDate: endDate];
    NSDate *lastDate = [endDate  dateByAddingTimeInterval: interval];//七天之前的日期
    
    return lastDate;
}


另外选择日期时  我建议用pickview  这个看起来不那么别扭  之前我也是在界面上弹出一个view  然后选择时间  太难看了

使用选择器 显示的样式截图如下  有关用法 我之前的blog有写



猜你喜欢

转载自blog.csdn.net/lixianyue1991/article/details/74344894