в моем приложении iPhone У меня есть дата начала мероприятия, например: 2013-05-17 15:00:12 +0000. Мой вопрос: как я могу изменить 2013-05-17 с сегодняшней датой, но оставить время одинаково?Измените год, месяц и день объекта NSDate
ответ
Вам нужно собрать компоненты даты и внести необходимые изменения.
//gather current calendar
NSCalendar *calendar = [NSCalendar currentCalendar];
//gather date components from date
NSDateComponents *dateComponents = [calendar components:(NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond) fromDate:[NSDate date]];
//set date components
[dateComponents setDay:17];
[dateComponents setMonth:5];
[dateComponents setYear:2013];
//save date relative from date
NSDate *date = [calendar dateFromComponents:dateComponents];
Либо так, либо вы можете добавить количество секунд, в течение 1 дня для увеличения значения:
NSDate *date = [NSDate dateWithTimeInterval:((60 * 60) * 24) sinceDate:[NSDate date]];
Вам необходимо найти номерОфис сегодняшнего дня в 0 утра и другое число днейОбсекунды в 0 утра. Найдите разницу между ними. Затем к numberOfSeconds 2013-05-17 15:00:12 +0000 добавьте эту разницу.
Почему вы не можете просто изменить дату начала с указанием текущей даты и времени, используя API dateWithString. Если нет, то вы, вероятно, можете посмотреть и на dateByAddingTimeInterval API NSDate, взяв diff timeinterval между двумя NSDate
Или в скор:
let calendar = NSCalendar.currentCalendar()
let components = calendar.components([NSCalendarUnit.Year, NSCalendarUnit.Month, NSCalendarUnit.Day], fromDate: NSDate.init())
components.day = 17
components.month = 5
components.year = 2013
let date = calendar.dateFromComponents(components)
Swift 3,0
Дата-дата, которая имеет год, месяц & День -5 с текущей даты
//CurrentDate
let currentDate = Date()
let gregorianCalendar = Calendar(identifier: .gregorian)
var components = gregorianCalendar.dateComponents([.year, .month, .day], from: currentDate)
// Change int value which you want to minus from current Date.
components.day = components.day!-5
components.month = components.month!-5
components.year = components.year!-5
let date = gregorianCalendar.date(from: components)!
print("Current Date = \(currentDate)")
print("Old Date = \(date)")
Swift 2,0
//CurrentDate
let currentDate = NSDate()
let gregorianCalendar = NSCalendar(identifier: .gregorian)
var components = gregorianCalendar.dateComponents([.year, .month, .day], from: currentDate)
// Change int value which you want to minus from current Date.
components.day = components.day!-5
components.month = components.month!-5
components.year = components.year!-5
let date = gregorianCalendar.date(from: components)!
print("Current Date = \(currentDate)")
print("Old Date = \(date)")
Читайте больше на моем блоге https://github.com/onmyway133/blog/issues/54
Сегодня я пытаюсь изменить год объекта Date 2000 в Swift.
let date = Date()
Во-первых, я попытался с date(bySetting:)
, но он не работает с прошлого года. Он просто возвращает ноль
Calendar.current.date(bySetting: .year, value: 2000, of: date)
Во-вторых, я попытался с dateComponents
. component.year
изменился, но календарь по-прежнему возвращает исходную дату, очень странно !!. Независимо от того, что часовой пояс и календарь я использую, она до сих пор не имеет этой проблемы
var component = calendar.dateComponents(in: TimeZone.current, from: base)
component.year = year
Calendar.current.date(from: component)
Наконец, я пытался быть более явным, и она работает
var component = calendar.dateComponents([.year, .month, .day, .hour, .minute, .second], from: base)
component.year = year
Calendar.current.date(from: component)
Этот код возвращает nil для меня каждый раз –
@WilliamT. Привет, я обновил свой ответ, пожалуйста, взгляните – onmyway133
Swift 3 & IOS 10,2
let calendar = Calendar.current
var dateComponents: DateComponents? = calendar.dateComponents([.hour, .minute, .second], from: Date())
dateComponents?.day = 17
dateComponents?.month = 5
dateComponents?.year = 2013
let date: Date? = calendar.date(from: dateComponents!)
print(date!)
Свифт 3 & IOS 10.2
- 1. Дата: Преобразование месяц/день/год в год-месяц-день формат
- 2. Как конвертировать (день месяц год) до (месяц год день)
- 3. php date() не получает год, месяц, день: NSDate to php
- 4. Сравнить NSDate объекты только через год месяц день
- 5. получить только месяц, день или год часть NSDate?
- 6. CJuiDatePicker год/год-месяц/год-месяц-день выбор
- 7. Как получить месяц и год от NSDate?
- 8. javascript месяц и день и год проверка
- 9. NSDate месяц и день недели локализованные
- 10. Как получить месяц и день от NSDate?
- 11. Год на год-месяц-день формат
- 12. jquery - день месяц год проверка
- 13. Месяц/День/Год Функция Выпуск
- 14. Дата Pick День Месяц Год
- 15. Как сравнить дату (год, месяц) с датой (день, месяц, год)
- 16. Конвертировать месяц, день, год в месяц, год с python/pandas?
- 17. Возможно «сбросить» выделенный месяц/день/год UIDatePicker?
- 18. , запрашивающий месяц, день и год в дате
- 19. Деление даты на день, месяц и год
- 20. Выберите день, месяц и год file.lastModified();
- 21. Текущий год, конкретный день и месяц - PHP
- 22. DatePickerDialog - Как отобразить День, месяц и год
- 23. Ember Дата получения Месяц, Год и День
- 24. Получите ГОД, МЕСЯЦ И ДЕНЬ с AngularJS
- 25. Angularjs следующий и предыдущий день, год, месяц
- 26. C++ Месяц, день и год проверки
- 27. JQuery datepicker - год, затем месяц и день
- 28. Разница между Time.new (год, месяц, день) и Time.local (год, месяц, день) в рубине
- 29. Соответствующий день и месяц в любом году в NSDate?
- 30. NSDate - год назад, дилемма
Добавление количества секунд за 1 день предполагает, что все дни имеют одинаковое количество секунд. Но это сломается на секунду: https: //en.wikipedia.org/wiki/Leap_second –
NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit устарели. Использование: (NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond). – Niraj