В Swift, как я могу получить NSDATE от Dispatch_time_t?IOS

Программируем под IOS
Ответить
Anonymous
 В Swift, как я могу получить NSDATE от Dispatch_time_t?

Сообщение Anonymous »

"Wallime"-малоизвестный формат времени, используемый Grand Central Dispatch. Apple говорит об этом здесь:

https://developer.apple.com/library/ios ... patch_ref/

Есть некоторые вещи, которые действительно удобны для, но это, но это, хотя это, но это побочные. Трудно заставить его играть хорошо с другими форматами времени, о чем мой вопрос.

Код: Выделить всё

 let now = NSDate().timeIntervalSince1970
let nowWholeSecsFloor = floor(now)
let nowNanosOnly = now - nowWholeSecsFloor
let nowNanosFloor = floor(nowNanosOnly * Double(NSEC_PER_SEC))
var thisStruct = timespec(tv_sec: Int(nowWholeSecsFloor),
tv_nsec: Int(nowNanosFloor))
let wallTime = dispatch_walltime(& thisStruct, 0)
< /code>

Но Господь любит утку, я не могу понять, как вернуть ее в nsdate < /code>. Вот моя попытка: < /p>

public func toNSDate(wallTime: dispatch_time_t)->NSDate {
let wallTimeAsSeconds = Double(wallTime) / Double(NSEC_PER_SEC)
let date = NSDate(timeIntervalSince1970: wallTimeAsSeconds)
return date
}
< /code>

Полученный NSDATE < /code> не только выключен, но и несколько смешно, как пятьсот лет или что -то в этом роде. Как отметил Мартин Р.NSDate
определяет время с двойным , а все после десятичной точки - наносекунд. Dispatch_time , который может создать время Wall, определяет время с Uint64 , поэтому вам нужно преобразовать между двойным и uint64 для его использования. Чтобы сделать это преобразование, вам необходимо использовать Timespec , который занимает секунды и наносекунд в качестве отдельных аргументов, каждый из которых должен быть int .

целый ряд конвертина продолжается!

Подробнее здесь: https://stackoverflow.com/questions/317 ... tch-time-t
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»