web-dev-qa-db-ja.com

NSDateをミリ秒のエポック時間に変換する

日付をタイムスタンプ(ミリ秒単位のエポック)に変換できる必要があります。私がオンラインで見るのは、ミリ秒をNSDateに変換するためのものであり、その逆ではありません。何か助けはありますか?

20
bakwarte

NSTimeIntervalは、小数点以下の1秒未満のデータが既に含まれているdoubleです。必要なものに応じて、変換は1000を掛けるだけの簡単なものになります。

- (void)testDateFormat
{
    NSDate *date = [NSDate date];
    NSLog(@"Time: %f", floor([date timeIntervalSince1970] * 1000));
    NSLog(@"Time: %f", floor([date timeIntervalSince1970]));
    NSLog(@"Time: %lli", [@(floor([date timeIntervalSince1970] * 1000)) longLongValue]);
    NSLog(@"Time: %lli", [@(floor([date timeIntervalSince1970])) longLongValue]);
}

// Result
// 2013-04-15 13:28:11.284 TestApp[10469:907] Time: 1366057691284.000000
// 2013-04-15 13:28:11.286 TestApp[10469:907] Time: 1366057691.000000
// 2013-04-15 13:28:11.287 TestApp[10469:907] Time: 1366057691284
// 2013-04-15 13:28:11.288 TestApp[10469:907] Time: 1366057691
49
Ben Flynn

timeIntervalSince1970は1970年から秒を返します。必要に応じて他のtimeIntervalSinceメソッドがあります。

https://developer.Apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html#//Apple_ref/occ/instm/NSDate/timeIntervalSince197

8
madmik3

timeIntervalSince1970は、戻り値がミリ秒単位ではなく秒単位であるため、戻り値に1000を掛けます。詳細については、そのWebサイトを確認してください http://currentmillis.com/

2
Amr Angry