NSDate型から文字列や数値に変換する。
NSDate *now = [NSDate new];
// NSDateFormatterを使ってNSDate型を文字列に変換
NSDateFormatter *formatter = [NSDateFormatter new];
formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
formatter.dateFormat = @"yyyy/MM/dd HH:mm:ss";
NSString *formattedString1 = [formatter stringFromDate:now];
// NSCalendarとNSDateComponentsを使ってNSDate型を整数に変換
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSUInteger flags = NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute;
NSDateComponents *components = [gregorian components:flags fromDate:now];
NSString *formattedString2 = [NSString stringWithFormat:@"%02d月%02d日 %02d時%02d分", (int)components.month, (int)components.day, (int)components.hour, (int)components.minute];
NSDateFormatter
のdateFormat
プロパティにフォーマット文字列を指定する場合は、ロケールに@"en_US_POSIX"
を指定した方が良いです。
ロケールを指定しない場合、端末設定で24時間表記をOFFにしている場合は「午前」「午後」といった文字列が付加されてしまうため、意図した通りフォーマットされません。@"en_US_POSIX"
はフォーマット通りの文字列を得ることができる特別なロケールです。
NSDateFormatter
の使い方は、こちらにまとめられています。
文字列や数値からNSDate型に変換する。
NSDate *date = nil;
// NSDateFormatterを使ってNSString型からNSDate型に変換
NSDateFormatter *formatter = [NSDateFormatter new];
formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
formatter.dateFormat = @"yyyy/MM/dd HH:mm:ss";
date = [formatter dateFromString:@"2013/01/02 11:12:13"];
// NSCalendarとNSDateComponentsを使って整数からNSDate型に変換
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [NSDateComponents new];
components.year = 2013;
components.month = 1;
components.day = 2;
components.hour = 11;
components.minute = 12;
components.second = 13;
date = [gregorian dateFromComponents:components];