0

我想知道 iOS 中是否还有其他更好的时间戳计算,我是否可以知道您对这种计算的看法,因为这种计算存在问题或错误。

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

    NSDate * startDate = [formatter dateFromString:dateString];
    NSTimeInterval interval = [startDate timeIntervalSinceNow];

    int totalSeconds = abs((int)interval);

    int seconds = totalSeconds % 60;
    int minutes = (totalSeconds / 60) % 60;
    int hours = totalSeconds / 3600;
    int days = totalSeconds / (60 * 60 * 24);
    int weeks = totalSeconds / (60 * 60 * 24 * 7);
    int months = totalSeconds / (60 * 60 * 24 * 7 * 4);
    int years = totalSeconds / (60 * 60 * 24 * 7 * 4 * 12);

非常感谢您的回复。

4

3 回答 3

1

NSDateComponents就是你要找的。

于 2013-06-10T08:54:55.930 回答
1

尝试

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

NSDate * startDate = [formatter dateFromString:dateString];

NSCalendar *calender = [NSCalendar currentCalendar];

unsigned units = (NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|
             NSDayCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit);
NSDateComponents *dateComponents = [calender components:units
                                               fromDate:startDate];

int seconds = dateComponents.second;
int minutes = dateComponents.minute;
int hours   = dateComponents.hour;
int days    = dateComponents.day;
int weeks   = dateComponents.week;
int months  = dateComponents.month;
int years   = dateComponents.year;
于 2013-06-10T09:00:56.930 回答
0

您应该尝试使用 NSCalendar 类及其方法:

- (NSDateComponents *)components:(NSUInteger)unitFlags fromDate:(NSDate *)date

例如:

NSCalendar *calendar = [NSCalendar currentCalendar];
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit;
NSDateComponentes *components = [calendar components: unitFlags fromDate: date];
于 2013-06-10T08:56:05.547 回答