#objective-c #ios #cocoa-touch #time #nsdate
#objective-c #iOS #cocoa-touch #время #nsdate
Вопрос:
Я пытаюсь закодировать обратный отсчет до определенного дня недели. Я хочу отобразить текущий день недели и оставшиеся секунды до среды.
Я могу закодировать первую часть, но даже после того, как я полдня искал решение, я не могу справиться со второй частью.
Это то, что у меня есть сейчас:
- (void)viewDidLoad {
[countdownLabel setFont:[UIFont fontWithName:@"Helvetica" size:128.0]];
countdownLabel.text = @"What day ist it?";
[super viewDidLoad];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
// Release anything that's not essential, such as cached data
}
- (void)dealloc {
[super dealloc];
}
-(void)updateLabel {
NSDateFormatter* theDateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[theDateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4];
[theDateFormatter setDateFormat:@"EEEE"];
countdownLabel.text = [theDateFormatter stringFromDate:[NSDate date]];
}
Ответ №1:
Посмотрите на оба класса NSDate и NSDateFormatter , они богаты подпрограммами для выполнения подобных действий.
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
NSDateFormatter * df = [NSDateFormatter dateFormatFromTemplate:@"yyyy-MM-dd-HH:mm" options:0 locale:usLocale];
NSDate * newyear = [df dateFromString:@"2012-01-01-00:00"];
NSTimeInterval seconds = [newyear timeIntervalSinceDate:[NSDate date]];
Не пытался скомпилировать вышеописанное, но это должно дать вам секунды. Вы должны иметь возможность заглянуть в документы NSDateFormatter, чтобы легко найти нужный день недели.
Комментарии:
1. спасибо, я это уже сделал. моя проблема в том, что я мог бы запрограммировать обратный отсчет до нового года в следующем году. но поскольку я хочу вести обратный отсчет до определенного дня недели, начиная с любого дня недели, я заблудился.