私のアプリでは、次の 1 年間の月名と年を取得し、配列に格納する必要があります。今日が 2012 年 9 月だとすると、2013 年 8 月までの月名と年が必要です。
月と年を取得する方法を教えてください。事前にサンクス
私のアプリでは、次の 1 年間の月名と年を取得し、配列に格納する必要があります。今日が 2012 年 9 月だとすると、2013 年 8 月までの月名と年が必要です。
月と年を取得する方法を教えてください。事前にサンクス
現在のカレンダーのコンポーネント パラメーターに NSMonthCalendarUnit を使用して、現在の月の数を取得します。たとえば、9 月の場合は 9、次に 2012 などの現在の年を表す NSYearCalendarUnit を取得します。次に、これらを for ループで使用し、モジュラス演算を使用して次のようにラップします。翌年。
for ループの月数が現在の月よりも小さい場合は、現在の年に 1 を加えた値を翌年として使用し、それ以外の場合は現在の年を使用します。
NSMonthCalendarUnit を使用したときに返される月の番号は 1 から始まりますが、monthSymbols のインデックス番号はゼロから始まることに注意してください。つまり、9 月を 9 で開始しても、この配列から得られる月は 10 月であり、これが次の月です。
/*
next 12 months after current month
*/
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSDate *today = [NSDate date];
NSCalendar *currentCalendar = [NSCalendar currentCalendar];
NSDateComponents *monthComponents = [currentCalendar components:NSMonthCalendarUnit fromDate:today];
int currentMonth = [monthComponents month];
NSDateComponents *yearComponents = [currentCalendar components:NSYearCalendarUnit fromDate:today];
int currentYear = [yearComponents year];
int nextYear = currentYear + 1;
int months = 1;
int year;
for(int m = currentMonth; months < 12; m++){
int nextMonth = m % 12;
if(nextMonth < currentMonth){
year = nextYear;
} else {
year = currentYear;
}
NSLog(@"%@ %i",[[dateFormatter monthSymbols] objectAtIndex: nextMonth],year);
months++;
}
NSDateFormatterは、あらゆるタイプの日付(NSDate)フォーマットなどのキーです。
int monthNumber = 09; //September
NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease];
NSString *monthName = [[df monthSymbols] objectAtIndex:(monthNumber-1)];
2012年9月17日のような日付を印刷するには
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateStyle:NSDateFormatterLongStyle];
[df setTimeStyle:NSDateFormatterNoStyle];
NSString *dateString = [df stringFromDate:[NSDate date]];
[df release];