다른 방법이나이 일을 더 나은 방법을 찾는 부족합니다. 나는 이것을 함께 쓴다. 필자는 원하는대로 형식화 된 날짜 배열을 작성합니다. 그것의 예쁜 아니지만 나는 그것을 할 수있는 더 좋은 방법을 찾을 수 없습니다. FOR 회 돌이가 포맷 된 날짜의 마지막 2자를 더 쉽게 설정할 수 있다고 생각할 것입니다.하지만 그 기묘함이있는 것으로 판명되었으므로 나는 그것을 수정하려고 한 시간을 보내고 싶지 않습니다. 그래서 쉽게 못생긴 방법을 벗어났습니다. 오늘 날짜와 요일을 시작으로
수요일 5
목요일 6
금요일 7
등 ...
:
는
아래 코드는 이와 같은 일 & 날짜의 형식의 배열을 생성합니다.
- (void)createDatesForPicker {
daysForPicker = [[NSMutableArray alloc] initWithCapacity:0];
formatedDaysForPicker = [[NSMutableArray alloc] initWithCapacity:0];
//get todays Day & Date
NSDate *today1 = [NSDate date];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"EEEE dd"];
//change how many days out you want to go here I am going 14 days out
for (int i=0; i<14; i++){
NSCalendar *gregorian11 = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components1 = [gregorian11 components:NSWeekdayCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:today1];
[components1 setDay:([components1 day]+i)];
NSDate *beginningOfWeek1 = [gregorian11 dateFromComponents:components1];
NSDateFormatter *dateFormat_weekend = [[NSDateFormatter alloc] init];
[dateFormat_weekend setDateFormat:@"EEEE dd"];
NSString *dateString_first = [dateFormat_weekend stringFromDate:beginningOfWeek1];
// unformatted dates array
[daysForPicker addObject:dateString_first];
}
// now we have all the days and date, so lets format them so they look good
for (int i=0; i<[daysForPicker count];i++) {
NSString * currentDay = [NSString stringWithFormat:@"%@",[daysForPicker objectAtIndex:i]];
//we have date now look at 2nd to last digit and check if it is a zero, if so remove it.
NSUInteger count = [currentDay length]-1;
NSRange r = NSMakeRange(count,1);
NSString * lastChar = [currentDay substringWithRange:r];
if ([lastChar isEqual:@"0"] == TRUE) {
//replace it with nothing
}
else {
//not a zero at the end so we are good to remove all zeros
currentDay = [currentDay stringByReplacingOccurrencesOfString:@"0" withString:@""];
}
//used later for date formatting
NSUInteger count2 = [currentDay length]-2;
NSRange r2 = NSMakeRange(count2,2);
NSString * dateDigits = [currentDay substringWithRange:r2];
if ([dateDigits isEqual:@" 1"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"st"];
}
if ([dateDigits isEqual:@" 2"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"nd"];
}
if ([dateDigits isEqual:@" 3"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"rd"];
}
if ([dateDigits isEqual:@" 4"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"th"];
}
if ([dateDigits isEqual:@" 5"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"th"];
}
if ([dateDigits isEqual:@" 6"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"th"];
}
if ([dateDigits isEqual:@" 7"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"th"];
}
if ([dateDigits isEqual:@" 8"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"th"];
}
if ([dateDigits isEqual:@" 9"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"th"];
}
if ([dateDigits isEqual:@"10"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"th"];
}
if ([dateDigits isEqual:@"11"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"th"];
}
if ([dateDigits isEqual:@"12"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"th"];
}
if ([dateDigits isEqual:@"13"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"th"];
}
if ([dateDigits isEqual:@"14"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"th"];
}
if ([dateDigits isEqual:@"15"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"th"];
}
if ([dateDigits isEqual:@"16"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"th"];
}
if ([dateDigits isEqual:@"17"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"th"];
}
if ([dateDigits isEqual:@"18"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"th"];
}
if ([dateDigits isEqual:@"19"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"th"];
}
if ([dateDigits isEqual:@"20"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"th"];
}
if ([dateDigits isEqual:@"21"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"st"];
}
if ([dateDigits isEqual:@"22"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"nd"];
}
if ([dateDigits isEqual:@"23"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"rd"];
}
if ([dateDigits isEqual:@"24"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"th"];
}
if ([dateDigits isEqual:@"25"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"th"];
}
if ([dateDigits isEqual:@"26"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"th"];
}
if ([dateDigits isEqual:@"27"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"th"];
}
if ([dateDigits isEqual:@"28"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"th"];
}
if ([dateDigits isEqual:@"29"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"th"];
}
if ([dateDigits isEqual:@"30"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"th"];
}
if ([dateDigits isEqual:@"31"] == TRUE) {
currentDay = [currentDay stringByAppendingString:@"st"];
}
// add formated string to array
[formatedDaysForPicker addObject:currentDay];
}
}
나는 내 자신의 질문에 대한 답변을 여기에 게시 된 코드 않습니다. 그 추한 그러나 그것은 일한다!! – Louie
전체 달 또는 주를 원합니다. – Srinivas