【问题标题】:Date conversion in iOS [closed]iOS中的日期转换[关闭]
【发布时间】:2015-10-19 15:07:10
【问题描述】:

我必须将日期(来自服务器)与今天的日期进行比较。来自服务器的日期格式不同(即日期格式可能是 2015-09-08 或 2015-09-08T11:30:00+0530)

我们如何在 iOS (Objective-C) 中将这些不同的日期格式与今天的日期进行比较。

【问题讨论】:

  • 用您迄今为止尝试过的内容更新您的问题。说明您遇到了什么问题。
  • 如果您想在 Objective C 中得到答案,为什么要用 swift 标签标记您的问题?

标签: ios objective-c nsdate


【解决方案1】:

其实,如果你想比较不同格式的2个日期,问题是你必须确保比较日期值
1.它们被转换为相同的时区。
2. 使用 - (NSComparisonResult)compare:(NSDate *)anotherDate 方法

此外,如果您想将日期字符串响应从 HE 转换为 NSDate,您可以执行以下操作

+ (NSDate *)dateFromDateString:(NSString *)dateString withFormat:(NSString *)format {
    NSDateFormatter *formatter = [NSDateFormatter new];
    formatter.dateFormat = format;
    return [formatter dateFromString:dateString];
}

此外,在比较特定组件中的 2 个日期(例如年、月、日,没有小时、分钟或秒)时,您必须使用 NSDateComponents

- (BOOL)date:(NSDate *)aDate isEqualToDateIgnoringTime:(NSDate *) anotherDate
    {
        NSCalendarUnit unitFlags = (NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond);
        NSDateComponents *components1 = [[NSCalendar currentCalendar] components:unitFlags fromDate:aDate];
        NSDateComponents *components2 = [[NSCalendar currentCalendar] components:unitFlags fromDate:anotherDate];
        return ((components1.year == components2.year) && (components1.month == components2.month) && (components1.day == components2.day));
}

【讨论】:

    【解决方案2】:

    试试这个

      -(void)dateFormateTest{
     NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss Z";
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    [formatter setTimeZone:[NSTimeZone defaultTimeZone]];
    [NSTimeZone resetSystemTimeZone];
    NSDate *date = [formatter dateFromString:@"2015-10-06 12:39:12"];
    NSLog(@"date: %@",date);
    
    NSComparisonResult result = [date compare:[NSDate date]];
    if (result == NSOrderedDescending) {
        NSLog(@"Past");
    }else if (result == NSOrderedDescending) {
        NSLog(@"future");
    }
    
    
    }
    

    【讨论】:

    • 为什么要在日期格式化程序上设置两种不同的日期格式?
    猜你喜欢
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    相关资源
    最近更新 更多