2013-04-04 2 views
0

Если я скажу upcoming monday, то как я могу получить дату upcoming monday?Как я могу получить дату наступающего дня - Цель C

Нравится, сегодня Thu, 04-04-2013, чем я могу получить, какая дата будет наступать wednesday?

Надеюсь, что смогу вас прояснить.

Похожий вопрос был здесь спросил, но я не в состоянии понять это:

Get the date of next saturday in Objective-C?

+1

я должен дать решение или будет искать? –

+0

, пожалуйста, примите решение. –

+1

Не говорите нам, что вы не можете понять ответ на свой точный вопрос. Скажите нам, какую часть ответа вы не понимаете. –

ответ

6
NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDate *date = [NSDate date]; 
NSDateComponents *weekdayComponents = [gregorian components:NSWeekdayCalendarUnit fromDate:date]; 
NSInteger todayWeekday = [weekdayComponents weekday]; 

enum Weeks { 
    SUNDAY = 1, 
    MONDAY, 
    TUESDAY, 
    WEDNESDAY, 
    THURSDAY, 
    FRIDAY, 
    SATURDAY 
}; 

NSInteger moveDays=WEDNESDAY-todayWeekday; 
if (moveDays<=0) { 
    moveDays+=7; 
} 

NSDateComponents *components = [NSDateComponents new]; 
components.day=moveDays; 

NSCalendar *calendar=[[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar]; 
NSDate* newDate = [calendar dateByAddingComponents:components toDate:date options:0]; 

NSLog(@"%@",newDate); 
+0

Мне больше всего нравится ваш ответ. Это легче понять. Но если сегодня «пятница», чем «на следующую пятницу», она дает «сегодняшнюю дату»! Попытка исправить это. Спасибо –

+1

просто замените 'if (moveDays <0)' by 'if (moveDays <= 0)' –

1

Просто раздражать Anoop;):

NSDate* now = [NSDate date]; 
NSTimeInterval nowInterval = [now timeIntervalSince1970]; 
int days = (int)(nowInterval/(24 * 60 * 60)); 
int today = (days + 4) % 7; 
NSDate* saturday = [NSDate dateWithTimeIntervalSince1970:nowInterval + (6 - today) * 24 * 60 * 60]; 
NSLog(@"saturday = %@", saturday); 
+1

У меня появилось раздражение ... полное тело ... в эти выходные будут посещать врачи. Как и многие люди, особенно «Вики», они говорят, что никогда не делают 60 * 60 * 24, поскольку у всех дней нет 60 секунд * 60 минут * 24 часа, а также некоторый дневной свет и т. Д. Всякий раз, когда 2-3 месяца назад, я использовал этот трюк, который я получил downvotes навалом. Но вы горячие, и каждый любит вас, поэтому upvote :) –

+0

, если я хочу найти какой-нибудь другой день, мне нужно изменить 4, 7, 6 или что? –

+0

Я оставляю это как упражнение для пользователя. Выясните, что такое алгоритм. –

Смежные вопросы