Обратный отсчет по секундам до определенного дня недели

#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. спасибо, я это уже сделал. моя проблема в том, что я мог бы запрограммировать обратный отсчет до нового года в следующем году. но поскольку я хочу вести обратный отсчет до определенного дня недели, начиная с любого дня недели, я заблудился.