&tag(Objective-C/日付と時刻); *目次 [#y0f4babe] #contents *参考情報 [#d92e67e8] -[[文字列からNSDate型に変換する: iPhoneアプリ開発備忘録:http://iphone-app-developer.seesaa.net/article/134688683.html]] -[[FirstResponder:NSDateをNSStringにしたい - livedoor Blog(ブログ):http://blog.livedoor.jp/firstresponder/archives/50089841.html]] -[[NSDateFormatter - 文字列と日付の変換 - 強火で進め:http://d.hatena.ne.jp/nakamura001/20100525/1274802305]] *NSDateを生成する [#r51cfa92] **現在の日付 [#db22e7a0] [NSDate date] **文字列から生成する [#le6b5693] #pre{{ NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setTimeStyle:NSDateFormatterFullStyle]; [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZ"]; NSDate *date = [formatter dateFromString:@"2009-12-05T20:26:00+09:00"]; [formatter release]; }} *NSDateを文字列に変換する [#t1115f69] **NSDateFormatterを使って書式指定 [#r99d5b68] #pre{{ NSDateFormatter *formatter = [[[NSDateFormatter alloc] initWithDateFormat:@"%Y/%m/%d %H:%M:%S" allowNaturalLanguage:FALSE] autorelease]; NSDate* date = [NSDate date]; NSString* dateStr = [formatter stringFromDate:date]; }} **NSDateFormatterでおおざっぱな形式を指定 [#t998f7bf] -[[How to make NSDateFormatter display locale-specific 2010-08-30 - Stack Overflow:http://stackoverflow.com/questions/1348590/how-to-make-nsdateformatter-display-locale-specific-date]] -setDateStyle / setTimeStyleを指定する。言語設定に応じた文字列が帰ってくるメリットがある。 *日付の計算を行う [#a9ee54c9] **日付の差を取得する [#j18f7db5] -[[NSDate - 日付の計算、過去の日や末日を求める方法 - 強火で進め:http://d.hatena.ne.jp/nakamura001/20100609/1276101689]]より。dateB > dateAで計算しないと正の数が帰ってこないらしい。 #pre{{ NSDateFormatter *inputDateFormatter = [[NSDateFormatter alloc] init]; [inputDateFormatter setDateFormat:@"yyyy/MM/dd HH:mm:ss"]; NSDate *dateA = [inputDateFormatter dateFromString:@"2000/03/01 00:00:00"]; NSDate *dateB = [inputDateFormatter dateFromString:@"2000/03/03 00:00:00"]; // dateBとdateAの時間の間隔を取得(dateB - dateAなイメージ) NSTimeInterval since = [dateB timeIntervalSinceDate:dateA]; NSLog(@"%f秒", since); NSLog(@"%f分", since/60); NSLog(@"%f時", since/(60*60)); NSLog(@"%f日", since/(24*60*60)); [inputDateFormatter release]; }}