iOS时间戳计算

iOS时间戳计算,ios,time,timestamp,Ios,Time,Timestamp,我想知道在iOS中是否还有其他更好的时间戳计算方法,我想知道你对这种计算方法的看法,这种计算方法是否存在问题或错误 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"MM-dd-yyyy HH:mm:ss"]; NSDate * startDate = [formatter dateFromString:dateString]; NSTi

我想知道在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);

非常感谢您的回复。

正是您需要的。

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

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

NSCalendar *calendar = [NSCalendar currentCalendar];
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit;
NSDateComponentes *components = [calendar components: unitFlags fromDate: date];
试一试


我认为NSDateComponents将只返回当前日期组件,而不是总天数、周数和月数。如果我错了,请纠正我。我认为NSDateComponents将只返回当前日期组件,而不是总天数、周数和月数。如果我错了,请纠正我。我认为NSDateComponents将只返回当前日期组件,而不是总天数、周数和月数。如果我错了,请纠正我。
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;