Преобразование NSDate в время в миллисекундах - PullRequest
20 голосов
/ 17 февраля 2012

Мне нужно иметь возможность преобразовать дату в метку времени, эпоху в миллисекундах.Все, что я вижу в Интернете, - это преобразование миллисекунд в NSDate, а не наоборот.Любая помощь там?

Ответы [ 3 ]

49 голосов
/ 16 апреля 2013

NSTimeInterval - это двойное число, которое уже содержит субсекундные данные после десятичной точки. В зависимости от того, что вам нужно, ваше преобразование может быть простым умножением на 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
8 голосов
/ 17 февраля 2012

timeIntervalSince1970 будет возвращать секунды с 1970 года. При необходимости существуют другие методы timeIntervalSince.

2 голосов
/ 04 апреля 2016

timeIntervalSince1970 умножьте возвращаемое значение на 1000, потому что возвращаемое значение находится в секундах, а не в миллисекундах. Пожалуйста, проверьте этот веб-сайт для дополнительного тестирования http://currentmillis.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...