2013-08-30 4 views
1

나는 선택한 날짜를 표시하는 UIDatePicker 및 UILabel을 보유하고 있습니다. 현재 날짜는 '2013-8-30 10:30:54 +0000'으로 표시됩니다. 날짜 대신 '00 : 00 : 00 : 00'을 'dd : hh : mm : ss'순으로 표시하고 싶습니다. 그런 다음 'dd : hh : mm : ss'의 디스플레이에서 선택한 날짜부터 카운트 다운을 시작하는 IBAction에서 타이머를 시작하고 싶습니다. 분석 할 수있는 도움말이나 참조 코드는 크게 감사하겠습니다. 나는 새롭고 완전히 독학했습니다. 미리 감사드립니다. 건배!UIDatePicker, NSTimer, 날짜 형식 지정 (& F) ...?

@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'을. 여기에는 수많은 기존 사례가 있습니다. – rmaddy

답변

0

첫째, 둘째

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]; 

:

바로 아래의 예처럼, NSDateFormatter를 사용하여 원하는 형식으로 날짜를 표시하는 방법 카운트 다운과 같은 동작을 수행하려면 1 초 (또는 그 이상)를 공제 할 수 있습니다 원하는 날짜를 지정하고 새 날짜를 문자열로 다시 변환하고 레이블을 업데이트하십시오.

를 셋업 NSTimer 곳 :

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

을 그리고 방법 refreshLabel 구현 : 여기에 당신이 그렇게 할 것입니다 방법은 원하는 형식으로`NSDate`을 보여

-(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; 
}