Objective C - How can i get the weekday from NSDate?

I need to be able to get the weekday from nsdate, i have the following code and it always return 1. I tried to change the month, i tried everything from 1 to 12 but the result of the week day is always 1.

NSDate *date2 = [[NSDate alloc] initWithString:[NSString stringWithFormat:@"%d-%d-%d", 2010, 6, 1]];
unsigned units2 = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit | NSWeekdayCalendarUnit;
NSCalendar *calendar2 = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components2 = [calendar2 components:units2 fromDate:date2];
int startWeekDay = [components2 weekday];
[date2 release];
[calendar2 release];
11
задан aryaxt 19 August 2010 в 17:14
поделиться

3 ответа

Edit for Mac:

Формат строки должен быть -YYYY-MM-DD HH:MM:SS ±HHMM согласно документации, все поля обязательны

Старый ответ (для iPhone и проверен на симуляторе):

В NSDate нет (публичного) -initWithString: метода, и то, что вы получите в ответ, будет не тем, что вы ожидаете.

Используйте правильно настроенный (необходимо указать формат ввода) NSDateFormatter и -dateFromString:.

6
ответ дан 3 December 2019 в 01:00
поделиться

Создание NSDateFormatter , который содержит только день недели, будет делать то, что вы хотите.

NSDate *now = [NSDate date];
NSDateFormatter *weekday = [[[NSDateFormatter alloc] init] autorelease];
[weekday setDateFormat: @"EEEE"];
NSLog(@"The day of the week is: %@", [weekday stringFromDate:now]);

Если вам нужна интернационализация, в NSDateFormatter можно отправить языковой стандарт, который даст правильный перевод.

Средства форматирования даты управляются с помощью этого стандарта: Unicode Date Formats

43
ответ дан 3 December 2019 в 01:00
поделиться

Я решил проблему, Проблема была в том, что формат моей строки даты был неправильным:

NSDate *date = [[NSDate alloc] initWithString:[NSString stringWithFormat:@"%d-%d-%d 10:45:32 +0600", selectedYear, selectedMonth, selectedDay]];

и так как я не забочусь о времени, я случайно передаю время в конец строки

0
ответ дан 3 December 2019 в 01:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: