NSDateの覚え書き

Last-modified: 2014-01-10 (金) 16:29:56

初期化

NSDate *aDate = [NSDate date];
NSLog(@"date: %@", aDate);

特定の日時で初期化

NSDate *aDate2 = [NSDate dateWithString:@"2000-10-24 11:30:00 +0900"];
NSLog(@"date: %@", aDate2);

グレゴリー暦を基にする実現オブジェクト

NSDateComponents *components = [[NSDateComponents alloc] init];
	components.year = 1983;
	components.month = 1;
//NSCalender カレンダ操作を受け持つオブジェクト
NSCalendar *gregorian
= [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *aDate = [gregorian dateFromComponents:components];
//NSDate,descriptionWithLocale:
NSLog(@"My birthday: %@", [aDate descriptionWithLocale:[NSLocale currentLocale]]);

和暦ででも初期化できます

NSDateComponents *component = [[NSDateComponents alloc] init];
	component.year = 26; //平成
	component.month = 1;
	component.day = 2;
	component.hour = 18;
	component.minute = 38;
	component.second = 47;
	component.timeZone = [NSTimeZone timeZoneWithName:@"JST"];
NSCalendar *japanese
= [[NSCalendar alloc] initWithCalendarIdentifier:NSJapaneseCalendar];
NSDate *aDate = [japanese dateFromComponents:component];
NSLog(@"今日: %@", aDate);
}

操作

日本語表記

NSLog(@"date: %@", [aDate descriptionWithLocale:[NSLocale currentLocale]]);

加算、減算

NSDate *aDate = [NSDate date];
NSDate *yesterday = [aDate dateByAddingTimeInterval:-60*60*24];
NSLog(@"yesterday: %@", yesterday);
NSDate *tomorrow = [aDate dateByAddingTimeInterval:+60*60*24];
NSLog(@"tomorrow:  %@", tomorrow);

日時コンポーネントの取得

NSDate *aDate = [NSDate date];
NSCalendar *gregorian
= [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorian components:(
	NSYearCalendarUnit
	| NSMonthCalendarUnit
	| NSDayCalendarUnit
	| NSHourCalendarUnit
	| NSMinuteCalendarUnit
	| NSSecondCalendarUnit
)
fromDate:aDate];
NSInteger era = components.year;
NSInteger mnt = components.month;
NSInteger day = components.day;
NSInteger hrs = components.hour;
NSInteger min = components.minute;
NSInteger sec = components.second;
NSLog(@"day = %ld, hour = %ld, minute = %ld, second = %ld", day, hrs, min, sec);
NSLog(@"day with components: %04ld-%02ld-%02ld %02ld:%02ld:%02ld",
	era,
	mnt,
	day,
	hrs,
	min,
	sec);
}

文字列表現を取得

NSDate *aDate = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
	formatter.dateStyle = NSDateFormatterFullStyle;
	formatter.timeStyle = NSDateFormatterShortStyle;
NSLog(@"date formatted in Japanese: %@", [formatter stringFromDate:aDate]);