** 解决了 . 代码已更新以正常工作**
我正在尝试计算当前日期/时间和未来日期/时间的天数,小时数,分钟数和秒数之间的差异 .
我做错了什么?首先,它看起来并不像时区正常工作 . 其次,小时数,分钟数和秒数都是关闭的 .
结果:当前日期:2013-09-12 05:42:24 0000(应该是太平洋标准时间晚上10:43)未来日期:2013-09-29 23:00:00 0000(应该是太平洋标准时间下午4点)
日:17小时:596523.235278(应为~425)分钟:35791394(应为~25516)秒:2147483647(应为~1530960)
// Get today's Date
NSDate *todaysDate = [NSDate date];
NSCalendar *gregorian1 = [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar];
NSDateComponents *todaysComps = [gregorian1 components: NSUIntegerMax fromDate: todaysDate];
[todaysComps setTimeZone:[NSTimeZone timeZoneWithName:@"America/Vancouver"]];
NSDate *todayFinalDate = [gregorian1 dateFromComponents: todaysComps];
NSLog(@"Current date: %@", todayFinalDate);
// Set Future Date
NSDate *futureDate = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar];
NSDateComponents *components = [gregorian components: NSUIntegerMax fromDate: futureDate];
[todaysComps setTimeZone:[NSTimeZone timeZoneWithName:@"America/Vancouver"]];
[components setHour: 16];
[components setMinute: 00];
[components setSecond: 00];
[components setDay: 29];
[components setMonth: 9];
[components setYear: 2013];
NSDate *newDate = [gregorian dateFromComponents: components];
NSLog(@"Future Date: %@", newDate);
//检查两个NSDateComponents之间的时间*差异= [[NSCalendar currentCalendar]组件:NSDayCalendarUnit fromDate:todaysDate toDate:newDate options:0]; int dayDiff = [差异日];
difference = [[NSCalendar currentCalendar] components:NSHourCalendarUnit fromDate:todaysDate toDate:newDate options:0];
int hourDiff = [difference hour];
difference = [[NSCalendar currentCalendar] components:NSMinuteCalendarUnit fromDate:todaysDate toDate:newDate options:0];
int minDiff = [difference minute];
difference = [[NSCalendar currentCalendar] components:NSSecondCalendarUnit fromDate:todaysDate toDate:newDate options:0];
int secDiff = [difference second];
self.daysLabel.text=[NSString stringWithFormat:@"%d",dayDiff];
self.hoursLabel.text=[NSString stringWithFormat:@"%d",hourDiff];
self.minutesLabel.text=[NSString stringWithFormat:@"%d",minDiff];
self.secondsLabel.text=[NSString stringWithFormat:@"%d",secDiff];
NSLog(@"\nDays: %i\nHours: %d\nMinutes: %i\nSeconds: %i",dayDiff,hourDiff,minDiff,secDiff);
4 回答
试试这个,
我认为这对你有所帮助
输出:DateBookApp [1179:70b]日期和日期之间的差异是0天22小时57分12秒