Basicamente, como o título diz. Eu estou querendo saber como eu poderia adicionar 1 dia para um NSDate
.
Então, se fosse:
21st February 2011
Seria:
22nd February 2011
Ou se fosse:
31st December 2011
Seria:
1st January 2012.
objective-c
date
cocoa-touch
nsdate
Andrew
fonte
fonte
Respostas:
Swift 5.0:
Objetivo C:
Isso deve ser auto-explicativo.
fonte
dateByAddingComponents
chamada paraNSCalendarOptions(rawValue: 0)
Desde o iOS 8, você pode usar
NSCalendar.dateByAddingUnit
Exemplo no Swift 1.x:
Swift 2.0:
Swift 3.0:
fonte
date.add(.days, 1)
? * vai e cria uma extensãoextension Date { func adding(_ component: Calendar.Component, _ value: Int) -> Date? { return Calendar.current.date(byAdding: component, value: value, to: self) } }
usoDate().adding(.day, 1) // "Jun 6, 2019 at 5:35 PM"
Atualizado para o Swift 5
Objetivo C
fonte
iOS 8+, OSX 10.9+, Objective-C
fonte
Uma implementação do Swift 3+ em funcionamento, com base na resposta da alta manutenção e no comentário do vikingosegundo . Essa extensão de data também possui opções adicionais para alterar ano, mês e hora:
O uso para adicionar apenas um dia, conforme solicitado pelo OP, seria:
fonte
let foo = Date().add([.calendar: 1, .yearForWeekOfYear: 3]
eu estivesse adicionando a solução alternativa à minha resposta . Obrigado pela sua sugestão, @vikingosegundo!Swift 4.0 (o mesmo que o Swift 3.0 nesta resposta maravilhosa, deixando claro para novatos como eu)
fonte
Use a função abaixo e use days paramater para obter a data daysAhead / daysBehind apenas passe o parâmetro como positivo para data futura ou negativo para datas anteriores:
fonte
Em rápido
fonte
Isso funciona!
fonte
A implementação muito simples do Swift 3.0 seria:
fonte
fonte
Swift 4.0
Uso
Nota: Se você não sabe por que as linhas de código terminam com um ponto de exclamação, procure "Swift Optionals" no Google.
fonte
Você pode usar o método do NSDate
- (id)dateByAddingTimeInterval:(NSTimeInterval)seconds
ondeseconds
seria60 * 60 * 24 = 86400
fonte
No Swift 2.1.1 e no xcode 7.1 OSX 10.10.5, você pode adicionar qualquer número de dias para frente e para trás usando a função
chamada de função para aumentar a data atual em 9 dias
chamada de função para diminuir a data atual em 80 dias
fonte
Aqui está um método de uso geral que permite adicionar / subtrair qualquer tipo de unidade (ano / mês / dia / hora / segundo etc.) na data especificada.
Usando o Swift 2.2
fonte
Ok - eu pensei que isso iria funcionar para mim. No entanto, se você usá-lo para adicionar um dia a 31 de março de 2013, ele retornará uma data que possui apenas 23 horas. Pode muito bem ter os 24, mas o uso em cálculos tem apenas 23:00 horas adicionadas.
Da mesma forma, se você avançar para 28 de outubro de 2013, o código adicionará 25 horas, resultando em um horário de 28-10-2013 01:00:00.
Para adicionar um dia, eu estava fazendo a coisa no topo, adicionando o:
Complicado, principalmente devido ao horário de verão.
fonte
60*60*24 + 1
por causa de segundos bissextos. As datas devem cobrir tudo isso, e é por isso que o manuseio de cacau na data é realmente ótimo!fonte
No Swift você pode fazer a extensão para adicionar método no NSDate
você pode usar isso como
fonte
Atualização para o Swift 4:
fonte
para o swift 2.2:
Espero que isso ajude alguém!
fonte
Swift 4, se tudo o que você realmente precisa é de um turno de 24 horas (60 * 60 * 24 segundos) e não "1 dia de calendário"
Futuro:
let dayAhead = Date(timeIntervalSinceNow: TimeInterval(86400.0))
Passado:
let dayAgo = Date(timeIntervalSinceNow: TimeInterval(-86400.0))
fonte
atualização para o swift 5
fonte
fonte
Eu tive o mesmo problema; use uma extensão para o NSDate:
fonte
Swift 2.0
fonte
No swift 4 ou swift 5, você pode usar como abaixo:
resultado:
fonte
Extensão de string: Converter String_Date> Data
Extensão de data: Converter Data> String
Extensão de data: obter +/- data
Uso:
referência: de várias perguntas
Como adiciono 1 dia a um NSDate?
função matemática para converter positivo int em negativo e negativo em positivo?
Convertendo NSString em NSDate (e vice-versa)
fonte
Use o seguinte código:
Como
agora está obsoleto.
fonte