Как говорится в названии. Мне интересно, как я мог бы добавить 1 день к NSDate
.
Так что, если бы это было:
21st February 2011
Это станет:
22nd February 2011
Или если бы это было:
31st December 2011
Это станет:
1st January 2012.
objective-c
date
cocoa-touch
nsdate
Андрей
источник
источник
Ответы:
Swift 5.0:
Цель C:
Это должно быть само за себя.
источник
dateByAddingComponents
вызова наNSCalendarOptions(rawValue: 0)
Начиная с iOS 8 вы можете использовать
NSCalendar.dateByAddingUnit
Пример в Swift 1.x:
Swift 2.0:
Swift 3.0:
источник
date.add(.days, 1)
? * идет и строит расширениеextension Date { func adding(_ component: Calendar.Component, _ value: Int) -> Date? { return Calendar.current.date(byAdding: component, value: value, to: self) } }
использованиеDate().adding(.day, 1) // "Jun 6, 2019 at 5:35 PM"
Обновлено для Swift 5
Цель С
источник
iOS 8+, OSX 10.9+, Objective-C
источник
Работающий реализация Swift 3+ на основе highmaintenance в ответ и vikingosegundo в комментарии. Это расширение даты также имеет дополнительные параметры для изменения года, месяца и времени:
Использование только для добавления дня в соответствии с запросом OP будет:
источник
let foo = Date().add([.calendar: 1, .yearForWeekOfYear: 3]
я добавляю альтернативное решение в свой ответ, хотя , Спасибо за ваше предложение, @vikingosegundo!Swift 4.0 (так же, как Swift 3.0 в этом замечательном ответе, просто давая понять новичкам, как я)
источник
Используйте приведенную ниже функцию и используйте параметр days, чтобы получить дату daysAhead / daysBehind, просто передайте параметр как положительный для будущей даты или отрицательный для предыдущих дат:
источник
В быстром
источник
Это работает!
источник
Swift 3.0 очень простой реализацией будет:
источник
источник
Swift 4.0
использование
Примечание. Если вы не знаете, почему строки кода заканчиваются восклицательным знаком, поищите в Google «Swift Optionals».
источник
Вы можете использовать метод NSDate
- (id)dateByAddingTimeInterval:(NSTimeInterval)seconds
гдеseconds
бы60 * 60 * 24 = 86400
источник
В Swift 2.1.1 и xcode 7.1 OSX 10.10.5 вы можете добавлять любое количество дней вперед и назад, используя функцию
вызов функции для увеличения текущей даты на 9 дней
вызов функции для уменьшения текущей даты на 80 дней
источник
Вот метод общего назначения, который позволяет добавлять / вычитать любые единицы измерения (год / месяц / день / час / секунда и т. Д.) В указанную дату.
Использование Swift 2.2
источник
Хорошо, я думал, что это сработает для меня. Однако, если вы используете его, чтобы добавить день к 31 марта 2013 года, он вернет дату, к которой добавлено только 23 часа. Это вполне может иметь 24, но использование в расчетах добавило только 23:00 часов.
Точно так же, если вы перейдете к 28 октября 2013 года, код добавит 25 часов, что приведет к дате 2013-10-28 01:00:00.
Чтобы добавить день, я делал это сверху, добавляя:
Сложно, в основном из-за перехода на летнее время.
источник
60*60*24 + 1
из-за високосных секунд. финики должны охватывать все это, и поэтому обработка какао на самом деле великолепна!источник
В Swift вы можете сделать расширение, чтобы добавить метод в NSDate
Вы можете использовать это как
источник
Обновление для Swift 4:
источник
для быстрой 2.2:
Надеюсь, это поможет кому-то!
источник
Swift 4, если все, что вам действительно нужно, это 24-часовая смена (60 * 60 * 24 секунд), а не «1 календарный день»
Будущее:
let dayAhead = Date(timeIntervalSinceNow: TimeInterval(86400.0))
Прошлое:
let dayAgo = Date(timeIntervalSinceNow: TimeInterval(-86400.0))
источник
обновление для Swift 5
источник
источник
У меня такая же проблема; используйте расширение для NSDate:
источник
Swift 2.0
источник
В swift 4 или swift 5 вы можете использовать, как показано ниже:
вывод:
источник
Расширение строки: Convert String_Date> Date
Расширение даты: Конвертировать дату> Строка
Продление даты: Получить +/- Дата
Использование:
ссылка: из нескольких вопросов
Как мне добавить 1 день к NSDate?
математическая функция для преобразования положительного int в отрицательное и отрицательного в положительное?
Преобразование NSString в NSDate (и обратно)
источник
Используйте следующий код:
Так как
сейчас устарела.
источник