Быстрые даты эквивалентны до 30 наносекунд

Я заметил, что при сравнении двух экземпляров Swift Date с == они относятся к той же дате, когда разница в DateComponents.nanoseconds меньше 30. Например:

 let calendar = Calendar(identifier: .gregorian) let startComps = DateComponents(year: 2017, month: 1, day: 1, hour: 0, minute: 0, second: 0, nanosecond: 0) let endComps = DateComponents(year: 2017, month: 1, day: 1, hour: 0, minute: 0, second: 0, nanosecond: 29) let startDate = calendar.date(from: startComps)! let endDate = calendar.date(from: endComps)! print(startDate == endDate) //prints true, changing 29 to 30 prints false 

Поведение такое же, если сравнивать с startDate.compare(endDate) == .orderedSame . Я не мог найти упоминания об этом в документах или заголовках. Существует ли логическая причина для 30 наносекунд, чтобы быть обрезанием для равенства?

One Solution collect form web for “Быстрые даты эквивалентны до 30 наносекунд”

Даты представлены внутренне как Double . Double с ограниченной точностью. Ваша первая дата имеет внутреннее значение 504950400.000000000000000 (при печати в 504950400.000000000000000 после запятой). Следующим более высоким представляемым значением является 504950400.000000059604645 . Так получилось, что ваша конечная дата, если вы установите для наносекунд 30 , составляет 504950400.000000059604645 (что фактически соответствует значению наносекунд 59 ).

То есть в январе 2017 года Date может различать только 59-наносекундные интервалы. Между тем в январе 2001 года Date может различать каждую наносекунду. А в 2027 году он будет различать 119-наносекундные интервалы.

  • Найти, если текущее время находится между диапазоном
  • Как сравнить два объекта NSDate в объекте C
  • Преобразование NSString в Date
  • Обнаружение NSDate с помощью NSDataDetector
  • Как добавить число повторов или срок действия для локального уведомления
  • NSDate странный час
  • NSDateFormatter возвращает неожиданные результаты
  • Как установить UILocalNotification в течение 30 дней подряд
  • Плохая конвертация строки в NSDate
  • iOS - как сравнить два раза?
  • NSNumber и NSTimeInterval
  • Interesting Posts

    UIView vs Container View

    iOS UITextField Auto Resize соответствует содержимому

    У указателя отсутствует спецификатор типа nullability

    Ошибка при запуске

    Загрузка изображения с помощью iOS с несколькими формами данных в Swift

    Использование Uneclared типа UIImage в Swift

    *** Завершение приложения из-за неотображенного исключения «NSGenericException», причина: «Дата начала не может быть позже по времени, чем дата окончания!»

    Как построить и связать FFMPEG с iOS?

    Как я могу использовать API YouTube для поддержки устройств HTML5 и iOS?

    Получение «использования необъявленного типа« NoError »с помощью ReactiveCocoa

    Swift, добавление массива классов в переменную не обновляет содержимое массива в исходном классе

    Массив доступности.h-like

    Показать предварительный просмотр сделанного изображения, но без редактирования UIImagePickerController UIImagePickerControllerSourceTypeSavedPhotosAlbum

    Автозапуск для установки шести квадратных изображений

    Как показать «Нет результатов» в UITableView, если результат поиска не возвращен?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.