2013-08-30 48 views
1

我有一个的UIDatePicker和一个UILabel显示所选择的日期。现在,日期显示为'2013-8-30 10:30:54 +0000'。我希望日期以“dd:hh:mm:ss”的顺序显示为“00:00:00:00”。然后我想从一个IBAction启动一个计时器,该计时器从显示器中的'dd:hh:mm:ss'的所选日期开始倒计时。任何帮助或参考代码,我可以分析将不胜感激。我是新的,完全自学。提前致谢。干杯!UIDatePicker,NSTimer,&格式化日期...?

@synthesize picker; 
@synthesize label; 

-(IBAction)displayDate:(id)sender { 
    NSDate *selected = [picker date]; 
    NSString *date = [selected description]; 
    self.label.text = date; 
} 

- (void)viewDidLoad { 
    NSDate *now = [NSDate date]; 
    [picker setDate:now animated:YES]; 
    self.label.text = [now description]; 
} 
@end 
+1

使用'NSDateFormatter'展现'NSDate'所需格式。现在有无数的例子。 – rmaddy

回答

0

第一:

要显示你想要的格式的日期,只是在下面的例子中使用NSDateFormatter,如:

self.formatter = [NSDateFormatter new]; //save a property of NSDateFormatter type, you'll use this before 
[formatter setDateFormat:@"dd:HH:mm:ss"]; 

self.date = [NSDate date]; //save in a property, this will be your start date 
self.label.text = [formatter stringFromDate:self.date]; 

二:

要执行类似倒计时的行为,您可以扣除一秒(或更多,取决于wha你想要)从日期中,再次在字符串中转换新的日期并更新你的标签。这里是你会怎么做:

设置一个地方的NSTimer:

[NSTimer scheduledTimerWithTimeInterval:1.0 
           target:self 
           selector:@selector(refreshLabel) 
           userInfo:nil 
           repeats:YES]; 

和实施方法refreshLabel

-(void)refreshLabel 
{ 
    NSDate *dateCountDown = [NSDate dateWithTimeIntervalSince1970:[self.date timeIntervalSince1970] - 1]; //the start-up date minus 1 sec. 
    self.label.text = [formatter stringFromDate:dateCountDown]; 
    self.date = dateCountDown; 
}