它将继续倒计时并更新当前时间。任何人都知道如何解决这个问题?我不知道NStimer将如何识别这样的日期格式: 20110803 23:59:59
答案 0 :(得分:3)
查找NSDateFormatter
。您可以指定一个格式字符串(-[setDateFormat:]
),以便从NSDate
和NSString
转换为AND。
转换回倒计时视图时,您可能需要使用NSDateComponents
和NSCalendar
来获取倒计时标签所需的部分(而不是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];