2011年6月17日金曜日

NSDateの使い方いろいろ

/*
NSDate
クラスの構造
[Foundation Class]
-NSObject
-NSDate
-NSDateComponents:年月日時分秒データを保持
-NSCalendar:カレンダー
-NSLocate:地域
-NSTimeZone:時間帯
現在時刻を取得してNSString型にするにはこんな感じ
日付と時刻を扱う場合はNSDateを利用。
1970年1月1日を起点とした秒数でカウントされている。
*/
//現在時刻を取得
// フォーマットの定義
NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@"YYYY/MM/dd HH:mm:ss"];
// 現在時刻を取得
NSDate* now_date = [NSDate date];
// 型変換:NSDate->NSString
NSString *now_dateStr = [formatter stringFromDate:now_date];
// 型変換:NSString->char
const char *now_dateChar = [now_dateStr UTF8String];
// この型変換でその後のログ生成などの文字列操作へつながるので結構必要要素。
// ちなみに、時間を操作する場合はこんな感じ
// 現在時刻から86400秒後 = 翌日
NSDate* future_date = [NSDate dateWithTimeIntervalSinceNow:86400.0f];
// 1970/1/1起点から2678400秒後 = 起点日から1ヶ月後 1970/2/1
NSDate* old_date = [NSDate dateWithTimeIntervalSince1970:2678400.0f];
// それからNSString型で時刻を作ってNSDate型にするにはこんな感じ
// NSDate型の時刻を生成する 2008/12/04 12:06:14
// NSString型で文字列生成
NSString *setDateNSString = [NSString stringWithFormat:@"2008-12-04T12:06:14+09:00"];
// NSDate型に変換
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterFullStyle];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZ"];
NSDate *setDateNSDate = [dateFormatter dateFromString:setDateNSString];
// まとめてくれた人ありがとう

0 件のコメント: