NSTimer倒计时标签

时间:2011-07-28 14:14:00

标签: iphone nstimer

它将继续倒计时并更新当前时间。任何人都知道如何解决这个问题?我不知道NStimer将如何识别这样的日期格式: 20110803 23:59:59

4 个答案:

答案 0 :(得分:3)

查找NSDateFormatter。您可以指定一个格式字符串(-[setDateFormat:]),以便从NSDateNSString转换为AND。

转换回倒计时视图时,您可能需要使用NSDateComponentsNSCalendar来获取倒计时标签所需的部分(而不是NSDateFormatter)。你可以这样做:

NSDateComponents *countdown = [[NSCalendar currentCalendar] 
    components:(NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) 
      fromDate:[NSDate date] 
        toDate:expiration 
       options:0];

这将计算您的所有单位差异(相对于设备当前配置的日历设置)。

您可以通过[countdown day][countdown hour]等电话重新获取组件。

答案 1 :(得分:0)

您可以使用NSDateFormatter这样轻松地获取日期,以便从字符串中获取NSDate个对象。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyyMMdd' 'HH:mm:ss"];
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
NSDate *date = [dateFormatter dateFromString:your_date_string];

答案 2 :(得分:0)

您可以使用NSDateformatter类将日期从NSString转换为NSDate。

NSString *dateString = @"20110803 23:59:59";
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyyMMdd HH:mm:ss"];
NSDate *date = [dateFormat dateFromString:dateStr];  

现在,为了倒计时,您每隔一秒钟使用NSTimer类,然后只需使用{即可获得当前日期与date变量之间的秒数差异{1}}。

timeIntervalSinceDate

现在你有几秒钟的差异,你可以将它转换成你想要显示的格式。

答案 3 :(得分:0)

我没有深入研究这个问题,对不起,如果我的答案有点不合适的话。

在这种情况下,我会使用NSDate。使用NSDateFormatter我会将xml的文本数据转换为NSDate。正确地改变NSTimer的每个滴答时改变NSDate的值。 还有一些代码,'因为NSDateFormatter的符号有时会造成混乱:

    NSString *xmlDateFormat = @"yyyyMMdd HH:mm:ss";
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:xmlDateFormat];
    NSDate *yourDate = [dateFormatter dateFromString:timeStringFromXml];

这是从xml读取的。如果在勾选时更改NSDate的值,您可以查看NSDate的文档。为了显示标签中的值,我将算术计算每个值,并在随意的NSString的帮助下显示它:

   [NSString stringWithFormat:@"%dday %dh %dm %ds", days, hours, minutes, seconds];