Eu sou novo no Swift e estou tentando um programador. Eu tenho a hora de início selecionada e preciso adicionar 5 minutos (ou múltiplos) à hora de início e exibi-la em um UILabel?
@IBAction func timePickerClicked(sender: UIDatePicker) {
var dateFormatter = NSDateFormatter()
dateFormatter.timeStyle = NSDateFormatterStyle.ShortStyle
var dateStr = dateFormatter.stringFromDate(startTime.date)
let sttime = dateStr
startTimeDisplay.text = dateStr
}
// How to advance time by 5 minutes for each section based on the start time selected and display time
// section 1 = start time + 5
// section 2 = start time + 10*
addingTimeInterval
dúvida, ele tem mais desempenho (embora provavelmente não seja material, a menos que você esteja fazendo isso milhões de vezes). O que é mais crítico, porém, é se você está falando sobre unidades de medida em dias (ou mais), então a renderização do calendário é preferível porque ela fará todos os ajustes de horário de verão para você.Você pode usar o método do Agenda
para adicionar qualquer
Calendar.Component
a qualquerDate
. Você pode criar uma extensão de data para adicionar x minutos àUIDatePicker
data de:Xcode 8 e Xcode 9 • Swift 3.0 e Swift 4.0
Então, você pode apenas usar o método de extensão para adicionar minutos ao remetente (UIDatePicker):
Teste de parque infantil:
fonte
.date(byAdding:value:to)
retornanil
? Estamos seguros para forçar o desembrulhamento aqui?Swift 4 :
// adicione 5 minutos até a data
// subtraia 5 minutos da data
Swift 5.1:
fonte
Você pode fazer aritmética de data usando
NSDateComponents
. Por exemplo:É o que você vê quando experimenta no playground
fonte
NSDate.init
comtimeIntervalSinceNow
:Ex:
fonte
Salve esta pequena extensão:
Em seguida, use-o intuitivamente como:
fonte
self.days * 30
e anos:self.days * 365
. Isso não é perfeito porque o ano pode ter 366 dias e o mês pode ser diferente de 30 dias, mas ainda é melhor que 28/336.Você pode usar no swift 4 ou 5
resultado:
fonte
Swift 3:
fonte
Caso você queira um timestamp unix
fonte
Acho que o mais simples será
fonte