5

目前我正在做的是将某个日期说 oldDate 与今天的日期进行比较

             NSDate *dt = [NSDate date];
             NSComparisonResult result = [oldDate compare:dt];
            if (result == NSOrderedAscending)
            { 
              // do something
            }

dt 也给了我今天的日期和时间。但我只想约会,没有时间。我怎样才能实现它?

4

4 回答 4

13
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"dd/MM/YYYY"];
NSString *dateString=[dateFormatter stringFromDate:[NSDate date]];
于 2013-08-08T10:23:04.443 回答
4

要注意时区和您可以执行以下操作的所有内容:

- (NSInteger)day {
    NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit fromDate:self];
    return [components day];
}

- (NSInteger)month {
    NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit fromDate:self];
    return [components month];
}

- (NSInteger)year {
    NSDateComponents *components = [[NSCalendar currentCalendar] components:NSYearCalendarUnit fromDate:self];
    return [components year];
}

当然,您可以将它们放在一个函数中,只需记住components相应地进行更改。

警告: 如果您想向用户显示某些内容,请使用 NSDateFormatter 的其他答案之一。

于 2013-08-08T10:26:50.417 回答
2

您需要使用日期格式化程序来正确输出NSDate对象的日期和/或时间。

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    [dateFormatter setDateStyle:NSDateFormatterFullStyle];
    [dateFormatter setTimeStyle:NSDateFormatterNoStyle];

    NSString *dateString = [dateFormatter stringFromDate:[NSDate date]];

设置不同的NSDateFormatterStyle类型将根据需要产生或多或少的信息,即:“Tuesday, 1st January 2013”​​或“01/02/2013”​​。

于 2013-08-08T10:24:47.607 回答
1

干得好:

NSDate *date = [NSDate Date];
NSDateFormatter *timeFormatter = [[NSDateFormatter alloc] init];
timeFormatter.dateFormat = @"HH:mm:ss";
NSString *timeString = [timeFormatter stringFromDate:date];

现在字符串timeString 包含 HH:mm:ss 格式的当前时间,即 11:26:59

哎呀,误读了这个问题!这只是日期的时间,请参阅其他答案 - 不妨也将其留在这里。

于 2013-08-08T10:23:37.000 回答