2013-08-30 90 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; 
}