Подтвердить что ты не робот

Как преобразовать NSTimeInterval в int?

Как преобразовать NSTimeInterval в значение Integer?

My TimeInterval имеет значение 83.01837. Мне нужно преобразовать его в 83. У меня есть googled, но не нашел никакой помощи.

4b9b3361

Ответ 1

Прямое назначение:

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

Ответ 2

Согласно документации, NSTimeInterval - это просто double:

typedef double NSTimeInterval;

Вы можете сделать это с помощью int:

seconds = (int) myTimeInterval;

Остерегайтесь переполнения!

Ответ 3

В Swift 3.0

let timestamp = round(NSDate().timeIntervalSince1970)

enter image description here

Ответ 4

Я подозреваю, что значения NSTimeInterval из NSDate переполнили NSInteger. Вы, вероятно, захотите долго. (64-битное целое число). Они могут хранить большие значения целого числа (-2 ^ 63 до 2 ^ 63 -1)

long long integerSeconds = round([NSDate timeIntervalSinceReferenceDate]);

EDIT:

Похоже, что NSInteger CAN хранит NSTimeInterval, по крайней мере, в течение следующих нескольких десятилетий. Текущая дата timeIntervalSinceReferenceDate составляет около 519 600 000, или около 2 ^ 28. На 32-битном устройстве и NSInteger может удерживать значение от -2 ^ 31 до 2 ^ 31-1. (2 ^ 31 - 2,147,483,648

Ответ 5

Свифт 4, Свифт 5

Я просто приведу к Int64:

Int64(Date().timeIntervalSince1970)

Ответ 6

Мне нужно было сохранить NSDate в Swift Number. Я использовал следующий состав, который отлично работает.

Double(startDateTime.timeIntervalSince1970)