Я должен найти день, что 1-й из каждого месяца приходится на создание пользовательского календаря; например, 1 сентября 2015 года приходится на вторник, что делает вторник в первый день месяца.Как определить локализованный первый день месяца?
У меня есть этот код, который работает в странах с английским языком, но для других стран он терпит неудачу, потому что он не переводится правильно.
// build date as start of month
monthDateComponents.year = components.year;
monthDateComponents.month = components.month;
monthDateComponents.day = 1;
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDate *builtDate =[gregorian dateFromComponents: monthDateComponents];
NSDateFormatter *df = [NSDateFormatter new];
[df setDateFormat:@"E"];
NSString *firstDay = [df stringFromDate:builtDate];
// now, convert firstDay to the numeric day number
if([firstDay isEqual:NSLocalizedString(@"Sun",nil)])
return 7;
else if([firstDay isEqual:NSLocalizedString(@"Mon",nil)])
return 1;
else if([firstDay isEqual:NSLocalizedString(@"Tue",nil)])
return 2;
else if([firstDay isEqual:NSLocalizedString(@"Wed",nil)])
return 3;
else if([firstDay isEqual:NSLocalizedString(@"Thu",nil)])
return 4;
else if([firstDay isEqual:NSLocalizedString(@"Fri",nil)])
return 5;
else if([firstDay isEqual:NSLocalizedString(@"Sat",nil)])
return 6;
Есть ли лучший способ сделать это, так что я не должен идти через каждую страну и найти то, что 3 символов аббревиатура для каждого дня? (например, по-французски, аббревиатура дня для субботы возвращает «sam.».) Как я теперь это кодировал, мне нужно знать каждый язык, на котором локализовано мое приложение (10 из них), заставляют его работать правильно ,
Заранее спасибо.
Этот код и ваша возникшая проблема не имеют смысла. Какой результат вы пытаетесь получить? Если это локализованная строка, вы уже получаете ее из 'NSDateFormatter'. Если это день недели, то вы не должны включать форматер вообще: получите этот компонент даты из календаря после создания даты входа. –
Привет, Джош ... Я не вижу ни одного компонента даты, который даст мне первый день месяца; компонент дня недели просто даст мне номер дня прошедшей даты. Мне нужно получить номер дня первого дня каждого месяца для создания календаря. Как я указал, он отлично подходит для англоговорящих стран, но не локализован. – SpokaneDude
После создания даты, используя компоненты даты и календарь, вы можете получить любой компонент даты _ для этой даты_ из календаря. Если вам нужен компонент дня недели _ этой даты, вы можете его получить. –