酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

iOSでUNIX時刻からNSDate型へ変換する

本記事は「UNIX時刻からNSDate型へ変換する - iOSアプリ開発の逆引き辞典」に転記しました。


Store KitのVerifyReceipt(レシート有効性確認)を行うと、以下のようなJSONが返ってきます。

receipt: {
    "latest_expired_receipt_info" =     {
        "expires_date" = 1306118975000;
    };
    receipt =     {
    };
    status = 21006;
}

このうち、expires_dateにそのレシートの有効期限が含まれています。expires_dateは、UNIX時刻(1970年1月1日0時0分0秒からのミリ秒)で返ってきます。この数字だけではいつレシートの有効期限が切れてしまうか判りません。UNIX時刻からNSDate型へ変換してみましょう。

UNIX時刻からNSDate型へ変換するには、NSDate dateWithTimeIntervalSince1970:メソッドを使用します。NSDate dateWithTimeIntervalSince1970:メソッドは、1970年1月1日0時0分0秒から指定した秒分だけ進んだNSDate型の時間を返してくれます。単位を合わせる為に、expires_dateを1000で割っておきましょう。

NSString* data; // JSONパースしてきた"expires_date"
NSTimeInterval interval = [data doubleValue] / 1000; // ms -> sec
NSDate* expiresDate = [NSDate dateWithTimeIntervalSince1970:interval];
NSLog(@"%@", expiresDate);

これで現在の時刻と比較すれば、有効期限がどれくらいかが判るかと思います。