Tag: Objective-C/日付と時刻

目次

参考情報

NSDateを生成する

現在の日付

[NSDate date]

文字列から生成する

  • setDateFormatで使用する書式文字列の詳細はUTS #35: Unicode Locale Data Markup Languageなどを参照のこと。
  • 例1): "2009-12-05T20:26:00+09:00"のような文字列から生成。
    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];
    
  • 例2): "Mon Jan 28 02:31:55 +0000 2013"から生成。
        NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
        [formatter setTimeStyle:NSDateFormatterFullStyle];
        [formatter setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"];
        NSDate *date = [formatter dateFromString:str];
    

NSDateを文字列に変換する

NSDateFormatterを使って書式指定

NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@"YYYY/MM/dd HH:mm:ss"];
NSDate* date = [NSDate date];
NSString* dateStr = [formatter stringFromDate:date];

NSDateFormatterでおおざっぱな形式を指定

年月日を取得する

  • iphone - How to get NSDate day, month and year in integer format? - Stack Overflow
    NSDate *currentDate = [NSDate date];
    NSCalendar* calendar = [NSCalendar currentCalendar];
    NSDateComponents* components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:currentDate]; // Get necessary date components
    
     [components month] //gives you month
     [components day] //gives you day
     [components year] // gives you year
    

日付の計算を行う

日付の差を取得する

  • NSDate - 日付の計算、過去の日や末日を求める方法 - 強火で進めより。dateB > dateAで計算しないと正の数が帰ってこないらしい。
    	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];
    

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-04-13 (水) 16:46:22