Как преобразовать NSTimeInterval в значение Integer?
My TimeInterval имеет значение 83.01837
. Мне нужно преобразовать его в 83
. У меня есть googled, но не нашел никакой помощи.
Как преобразовать NSTimeInterval в значение Integer?
My TimeInterval имеет значение 83.01837
. Мне нужно преобразовать его в 83
. У меня есть googled, но не нашел никакой помощи.
Прямое назначение:
NSTimeInterval interval = 1002343.5432542;
NSInteger time = interval;
//time is now equal to 1002343
NSTimeInterval является двойным, поэтому, если вы назначаете его непосредственно NSInteger (или int, если хотите), он будет работать. Это сократит время до ближайшей секунды.
Если вы хотите округлить до ближайшей секунды (а не отключить его), вы можете использовать раунд, прежде чем выполнять задание:
NSTimeInterval interval = 1002343.5432542;
NSInteger time = round(interval);
//time is now equal to 1002344
Согласно документации, NSTimeInterval
- это просто double
:
typedef double NSTimeInterval;
Вы можете сделать это с помощью int
:
seconds = (int) myTimeInterval;
Остерегайтесь переполнения!
В Swift 3.0
let timestamp = round(NSDate().timeIntervalSince1970)
Я подозреваю, что значения NSTimeInterval из NSDate переполнили NSInteger. Вы, вероятно, захотите долго. (64-битное целое число). Они могут хранить большие значения целого числа (-2 ^ 63 до 2 ^ 63 -1)
long long integerSeconds = round([NSDate timeIntervalSinceReferenceDate]);
Похоже, что NSInteger CAN хранит NSTimeInterval, по крайней мере, в течение следующих нескольких десятилетий. Текущая дата timeIntervalSinceReferenceDate составляет около 519 600 000, или около 2 ^ 28. На 32-битном устройстве и NSInteger может удерживать значение от -2 ^ 31 до 2 ^ 31-1. (2 ^ 31 - 2,147,483,648
Свифт 4, Свифт 5
Я просто приведу к Int64:
Int64(Date().timeIntervalSince1970)
Мне нужно было сохранить NSDate в Swift Number. Я использовал следующий состав, который отлично работает.
Double(startDateTime.timeIntervalSince1970)