Nano Hash - криптовалюты, майнинг, программирование

Минимальная дата UIDatePicker

Меня смущает один вопрос. Я не понимаю, где я сделал ошибку

Мне нужно было сделать минимальную дату для моего UIDatePicker около 1810 года. Поэтому я пытаюсь сделать это как

    datePicker.minimumDate = [[NSDate alloc] initWithTimeIntervalSince1970: - (60 * 60 * 24 * 365 * 160)];

Но я получаю неправильную минимальную дату: введите здесь описание изображения

Поэтому я пошел другим путем и решил проблему

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comps = [NSDateComponents new];
comps.year = -160;
datePicker.minimumDate = [calendar dateByAddingComponents:comps toDate:[NSDate dateWithTimeIntervalSince1970:0] options:0];

Но я не могу понять, почему в первом случае я получаю неправильную минимальную дату


  • Все дни не одинаковы. Дневной свет, прыжки..... 28.04.2013
  • Интересно, исчезнет ли проблема, если вы сделаете явное -1 * 60 * 60 * ...? 28.04.2013
  • попробуйте 60.0 * 60 * 24 * 365 * 160 сделать один из них плавающим 28.04.2013
  • Anoop Vaidya, да, это поможет решить проблему =) Напишите свой ответ для проверки как лучший ответ 28.04.2013

Ответы:


1
datePicker.minimumDate = [[NSDate alloc] initWithTimeIntervalSince1970: - (60 * 60 * 24 * 365 * 160)];

160 лет не 60 sec * 60 min * 24 hours * 365 days.

Вы не учли различные факторы, один из самых простых – это високосный год.

Редактировать:

Используйте 60.0 * 60 * 24 * 365 * 160, чтобы сделать один из них плавающим, поэтому результат будет float, так как вы можете выйти за пределы диапазона int32(ios).

28.04.2013
  • Это может быть правдой, но его результат для 1946 года и близко не соответствует 1810, поэтому я не думаю, что не думаю ошибка в расчете високосного года является здесь проблемой. 28.04.2013
  • @MichaelDautermann: прочитав ответ Натана, я думаю, он прав, разве он не должен пытаться использовать double вместо int. попробуйте 60,0 * 60 * 24 * 365 * 160 сделать один из них плавающим 28.04.2013

  • 2

    На мой взгляд, это связано с максимальным значением int. Выполнение этого умножения приводит к 5 045 760 000, и, поскольку вы сделали это, умножение целых чисел, а не 60,0 * 60,0, возможно, это причина того, что оно не работает.

    Попробуйте указать число, которое я разместил здесь, или просто объявите его как число с плавающей запятой и передайте методу, или сделайте одно из них плавающим, чтобы результатом было число с плавающей запятой: - 60,0 * 60 * 24 * 365 * 160

    28.04.2013
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..