iOS)当我接近秒级别时,timeIntervalSince70 的值是固定的

标签 ios timer nsdate

我想更新每秒显示 2 个 nsdate 之间剩余时间的标签。

我的代码如下:

NSDate *nowDate = [NSDate date];
double diff = [campaignDate timeIntervalSince1970] - [nowDate timeIntervalSince1970];

int diff_day = diff/60/60/24 - 1; 
int diff_hour = ((int)diff/60/60)%24;
int diff_min = ((int)diff/60)%60;
int diff_sec = ((int)diff/60/60)%60;

当我记录 diff_sec 时,它总是显示 49 按工作顺序打印天、小时和最小值

为什么 diff_sec 会产生问题?有什么解决办法吗?

最佳答案

我认为你应该使用 NSDateComponents 来获取两天之间的天数/小时/分钟/秒数。

然后你可以这样得到剩余时间:

NSDate *fromDate = [NSDate date];
NSDate *toDate = [NSDate dateWithTimeIntervalSinceNow:12345];

NSCalendar *calendar = [NSCalendar currentCalendar];

NSDateComponents *difference = [calendar components:NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:fromDate toDate:toDate options:0];

NSLog(@"Event in %@ days, %@:%@:%@", @(difference.day), @(difference.hour), @(difference.minute), @(difference.second));

关于iOS)当我接近秒级别时,timeIntervalSince70 的值是固定的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29627254/

相关文章:

ios - NSString stringWithCString不显示特殊字符吗?

c++ - 如何在 C++ 中设置定时器?

ios - 转换日期格式

objective-c - 给定年份使用 iPhone SDK 的天数?

两种不同语言的 iOS 应用程序,无需本地化

c# - MonoTouch 和 "Applications are expected to have a root view controller at the end of application launch"错误

ios - 从文件中搜索 NSString

c# - 为什么我的 System.Timers.Timer 事件没有在 C# 中触发

c++ - 在 c++/clr 中创建一个定时器事件

ios - NSDate。抓取今天之前的所有日期