2015年

6月

11日

Objective-C NSDate 日付処理まとめ

NSDate を使って現在の日付を年・月・日・分・秒単位で取得してみる

NSDate 簡易表示 / 表示(書式スタイル設定)/ 表示(書式設定) ......  出力Log例

2015-06-11 11:19:10 +0000
平成27年6月11日木曜日 20時19分10秒 日本標準時
1. H27/06/11 20:22
2. H27/06/11 20:22:13
3. 平成27年6月11日 20:22:13 JST
4. 平成27年6月11日木曜日 20時22分13秒 日本標準時
5. 
1. 0027/06/11
2. 20/26/28
3. 平成0027年06月11日(木曜日)20時26分28秒
1. 平成27年6月11日木曜日 20時26分33秒 日本標準時
2. 2015/06/11(Thursday)20:26:33
3. 平成27年06月/11日(木曜日)午後08:26:33
3. (
    eu,
    "hr_BA",
    "en_CM",
    "rw_RW",
    "en_SZ",
    "tk_Latn",
    "uz_Arab",
    "he_IL",
    ar,
    "en_PN",
    as,
    "en_NF",
    "rwk_TZ",
    "zh_Hant_TW",
    "gsw_LI",
    "th_TH",
    "ta_IN",
    "es_EA",
    "fr_GF",
    ...........
)
1. 平成27年6月11日木曜日 20時26分47秒 日本標準時
2. 平成27年6月11日木曜日 4時26分47秒 アメリカ太平洋夏時間
2. 平成27年6月11日木曜日 11時26分47秒 GMT
2015-06-11 20:26:50.723 DateType[5479:3678463] {
    ADT = "America/Halifax";
    AKDT = "America/Juneau";
    AKST = "America/Juneau";
    ART = "America/Argentina/Buenos_Aires";
    AST = "America/Halifax";
    BDT = "Asia/Dhaka";
    BRST = "America/Sao_Paulo";
    BRT = "America/Sao_Paulo";
    BST = "Europe/London";
    CAT = "Africa/Harare";
    CDT = "America/Chicago";
    CEST = "Europe/Paris";
    CET = "Europe/Paris";
    CLST = "America/Santiago";
    CLT = "America/Santiago";

    ......... 
}
平成1957年2月15日木曜日 23時59分59秒 日本標準時
平成27年6月11日木曜日 20時26分55秒 日本標準時
平成27年6月12日金曜日 20時26分55秒 日本標準時
一致
dt01 < dt02

ViewController.m

#import "ViewController.h"


@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad

{

    [super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

}


- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


// [簡易表示]ボタンを押す

- (IBAction)proc01:(id)sender {

    

    // 表示対象(現在日時(システム日付))

    NSDate *dt =[NSDate date];

    

    // パターン1 description:説明

    NSString *str01 = [dt description];

    NSLog(@"%@",str01);

    

    // パターン2

    NSString *str02 = [dt descriptionWithLocale:[NSLocale currentLocale]];

    NSLog(@"%@",str02);

    

    

}


// [表示(書式スタイル設定)]ボタンを押す

- (IBAction)proc02:(id)sender {

    

    // 表示対象

    NSDate *dt =[NSDate date];

    

    //日時書式作成

    NSDateFormatter *df = [[NSDateFormatter alloc] init];

    

    // スタイル1

    df.dateStyle = NSDateFormatterShortStyle;

    df.timeStyle = NSDateFormatterShortStyle;

    

    NSLog(@"1. %@",[df stringFromDate:dt]);

    

    // スタイル2

    df.dateStyle = NSDateFormatterMediumStyle;

    df.timeStyle = NSDateFormatterMediumStyle;

    

    NSLog(@"2. %@",[df stringFromDate:dt]);

    

    // スタイル3

    df.dateStyle = NSDateFormatterLongStyle;

    df.timeStyle = NSDateFormatterLongStyle;

    

    NSLog(@"3. %@",[df stringFromDate:dt]);

    

    // スタイル4

    df.dateStyle = NSDateFormatterFullStyle;

    df.timeStyle = NSDateFormatterFullStyle;

    

    NSLog(@"4. %@",[df stringFromDate:dt]);

    

    // スタイル5

    df.dateStyle = NSDateFormatterNoStyle;

    df.timeStyle = NSDateFormatterNoStyle;

    

    NSLog(@"5. %@",[df stringFromDate:dt]);

    

}


// [表示(書式設定)]ボタンを押す

- (IBAction)proc03:(id)sender

{

    // 表示対象

    NSDate *dt =[NSDate date];

    

    //日時書式作成

    NSDateFormatter *df = [[NSDateFormatter alloc] init];

    

    // パターン1

    df.dateFormat = @"yyyy/MM/dd";

    NSLog(@"1. %@",[df stringFromDate:dt]);

    

    // パターン2

    df.dateFormat = @"HH/mm/ss";

    NSLog(@"2. %@",[df stringFromDate:dt]);

    

    // パターン3 AD Anno Domini

    df.dateFormat =

        @"GGGGyyyyMMdd(EEEE)"

        @"HHmmss";

    

    NSLog(@"3. %@",[df stringFromDate:dt]);

}


// [表示(言語環境(書式(ロケール)、カレンダー)設定)]ボタンを押す

- (IBAction)proc04:(id)sender {

    

    // 表示対象

    NSDate *dt =[NSDate date];

    

    //日時書式作成

    NSDateFormatter *df = [[NSDateFormatter alloc] init];

    

    // パターン1(システム設定)

    df.locale = [NSLocale currentLocale];

    df.calendar = [NSCalendar currentCalendar];

    

    df.dateStyle = df.timeStyle = NSDateFormatterFullStyle; // 識別子:4 でも処理出来る

    // 日付型 文字列変換

    NSLog(@"1. %@",[df stringFromDate:dt]);


    // パターン2(設定:英語 ー アメリカ合衆国、西暦)

    df.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];

    df.calendar = [[NSCalendar alloc]

                   initWithCalendarIdentifier:NSGregorianCalendar];

    

    df.dateFormat =@"yyyy/MM/dd(EEEE)" @"HH:mm:ss";

    NSLog(@"2. %@",[df stringFromDate:dt]);

    

    // パターン3(設定:日本語 ー 日本、和暦)

    df.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"ja_JP"];

    df.calendar = [[NSCalendar alloc]

                   initWithCalendarIdentifier:NSJapaneseCalendar];

    

    // (EE) (EEEE)金曜日

    df.dateFormat =@"GGyyMM/dd(EEEE)" @"ahh:mm:ss";

    NSLog(@"3. %@",[df stringFromDate:dt]);

    

}


// [表示(ロケール識別子一覧)]ボタンを押す

- (IBAction)proc04s:(id)sender {

    

    // 利用可能な「言語/国コード」

    NSArray *arr = [NSLocale availableLocaleIdentifiers];

    NSLog(@"3. %@",arr);

    

}


// [表示(タイムゾーン設定)]ボタンを押す

- (IBAction)proc05:(id)sender {

    

    // 表示対象

    NSDate *dt =[NSDate date];

    

    //日時書式作成

    NSDateFormatter *df = [[NSDateFormatter alloc] init];

    df.dateStyle = df.timeStyle = NSDateFormatterFullStyle;

    

    // パターン1(システム設定)日本標準時

    df.timeZone = [NSTimeZone systemTimeZone];

    NSLog(@"1. %@",[df stringFromDate:dt]);

    

    // パターン2(タイムゾーン名の設定)アメリカロサンゼルス標準時

    df.timeZone = [NSTimeZone timeZoneWithName:@"America/Los_Angeles"];

    NSLog(@"2. %@",[df stringFromDate:dt]);

    

    // パターン3(タイムゾーン略称の設定)グリニッジ標準時

    df.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];

    NSLog(@"2. %@",[df stringFromDate:dt]);

}


// [タイムゾーン一覧]ボタンを押す

- (IBAction)proc05s:(id)sender {

    

    NSDictionary *dic = [NSTimeZone abbreviationDictionary];

    NSLog(@"%@",dic);

    

}


// [文字列から変換]ボタンを押す

- (IBAction)proc06:(id)sender {

    

    // 日時書式の作成

    NSDateFormatter *df = [[NSDateFormatter alloc] init];

    df.dateFormat = @"yyyy/MM/dd HH:mm:ss";

    

    // 日付型へ変換

    NSString *str = @"1957/02/15 23:59:59";

    NSDate *dt = [df dateFromString:str];

    

    NSLog(@"%@",[dt descriptionWithLocale:

                 [NSLocale currentLocale]]);

}


// [経過日時の取得]ボタンを押す

- (IBAction)proc07:(id)sender {

    

    // 基準日時

    NSDate *dt01 =[NSDate date];

    

    //経過日時の取得(単位:秒)

//    NSDate *dt02 = [[NSDate dateWithTimeInterval:60.0 // double

//                                       sinceDate:dt01] init];

    //X 時間 X 日 過去日付 - (マイナスにすれば良い)

    NSDate *dt02 = [[NSDate dateWithTimeInterval:60.0 * 60 * 24.0 // double

                                       sinceDate:dt01] init];

    

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

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

    

}


// [一致判定]ボタンを押す

- (IBAction)proc08:(id)sender {

    

    // 日時書式の作成

    NSDateFormatter *df = [[NSDateFormatter alloc] init];

    df.dateFormat = @"yyyy/MM/dd HH:mm:ss";

    

    NSDate *dt01 = [df dateFromString:@"2000/01/01 01:01:01"];

    NSDate *dt02 = [df dateFromString:@"2000/01/01 01:01:01"];

    

    //

    BOOL res = [dt01 isEqualToDate:dt02];

    

    if (res) { // (res == YES)

        NSLog(@"一致");

    } else {

        NSLog(@"不一致");

    }

}


// [大小判定]ボタンを押す

- (IBAction)proc09:(id)sender {

    

    // 日時書式の作成

    NSDateFormatter *df = [[NSDateFormatter alloc] init];

    df.dateFormat = @"yyyy/MM/dd HH:mm:ss";

    

    NSDate *dt01 = [df dateFromString:@"2000/01/01 01:01:01"];

    NSDate *dt02 = [df dateFromString:@"2000/01/01 01:01:09"];

    

    // 大小判定 compare 比較

    NSComparisonResult res = [dt01 compare:dt02];

    

    switch (res) {

        case NSOrderedAscending:    // 昇順

            NSLog(@"dt01 < dt02");

            break;

        case NSOrderedSame:         // 同じ

            NSLog(@"dt01 = dt02");

            break;

        case NSOrderedDescending:   // 降順

            NSLog(@"dt01 > dt02");

            break;

            

        default:

            break;

    }

}

@end

GitHub DateType

  

目 次