2015-07-15 2 views
-1

Мне нужен метод, который возвращает мне дату следующего дня с фиксированным именем (например, понедельник, четверг и т. Д.).Как принять дату от имени дня?

Ex: Поэтому, если я хочу дать имя (понедельник) или номер (1, первый день с недели), он должен вернуться 20/07/2015.

Можно ли получить?

Редакция:

Я хочу взять самый присваиваемой день (понедельник, четверг, субботу и т.д.) мою текущей датой.

Я вам приведу пример. Текущая дата - WED, 15/07/15:

Если я хочу получить самую назначенную дату пятницы, результатом должно быть дата: 17/07/15.

Если я хочу получить самую назначенную дату в понедельник, результатом должно быть дата: 20/07/15.

Как я могу это получить?

+0

Не удалось понял ваш вопрос, возможно, вы получите помощь от этого: http://stackoverflow.com/a/4269211/3202193 –

+0

есть 52 понедельников в году и, кроме того существуют тысячи лет. поэтому, в какую дату вы хотели бы получить _output_, если _input_ - простое имя дня? Я предполагаю, что ваш вопрос и запрос нужно уточнить немного, так как в настоящее время он не определен и может привести к неоднозначным ответам, которые вы можете снизить в конце дня, сказав: «это не соответствует вашему требованию». – holex

+0

Я принимаю то, что сказал holex.Ask ясно – user3182143

ответ

0

В конце я использовал этот код. Он работает, спасибо всем!

NSDate *pickerDate = [NSDate date]; 

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] ; 

NSDateComponents *comps = [gregorian components:NSWeekdayCalendarUnit fromDate:pickerDate]; 
    int weekday = [comps weekday]; 

NSDateComponents *dayComponent = [[NSDateComponents alloc] init]; 

dayComponent.day = 1; 

while (weekday!=aux) 

{ 

    //aux is number day in week: Sunday=1, Monday=2 

    pickerDate = [gregorian dateByAddingComponents:dayComponent toDate:pickerDate options:0]; 

    comps = [gregorian components:NSWeekdayCalendarUnit fromDate:pickerDate]; 

    weekday = [comps weekday]; 

} 
0

Здесь:

NSDate *now = [[NSDate alloc] init]; 
NSDateComponents *dateComponents = [[NSDateComponents alloc] init]; 
[dateComponents setDay:1]; // Here you can give any positive number you want 
NSDate *newDate = [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:now options:0]; 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"YYYY-MM-dd"]; 
NSLog(@"%@", formatter); 
0

как первый день недели может быть различным для различных настроек локали, это решение с использованием индекса будний день. Возвращаемое значение является необязательным NSDate объект

func dateOfNextWeekday(weekday : Int) -> NSDate? { 
    let components = NSDateComponents() 
    components.weekday = weekday 
    let calendar = NSCalendar.currentCalendar() 
    return calendar.nextDateAfterDate(NSDate(), matchingComponents: components, options: .MatchNextTime) 
} 

dateOfNextWeekday(1) 
2

Это поможет вам получить текущий день недели. Затем вы можете использовать это для отображения следующего дня или любого другого состояния, которое вам нравится.

NSDateComponents *component = [[NSCalendar currentCalendar] components:NSCalendarUnitWeekday fromDate:[NSDate date]]; 

switch ([component weekday]) { 

    case 1: NSLog(@"Sunday"); break;  
    case 2: NSLog(@"Monday"); break;  
    case 3: NSLog(@"Tuesday"); break; 
    case 4: NSLog(@"Wednesday"); break; 
    case 5: NSLog(@"Thursday"); break; 
    case 6: NSLog(@"Friday"); break; 
    case 7: NSLog(@"Saturday"); break; 

    default: NSLog(@"Error..."); break; 
} 
+1

... OP хочет получить дату _from_ имя дня недели. – holex

+0

Да, это не то, что пользователь просил. И это было даже поддержано дважды ... – Dree

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