Je suis nouveau sur Swift et j'essaie un planificateur. J'ai sélectionné l'heure de début et je dois ajouter 5 minutes (ou des multiples de celle-ci) à l'heure de début et l'afficher dans un 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
est sans aucun doute plus performant (mais probablement pas important à moins que vous ne le fassiez des millions de fois). Ce qui est plus important, cependant, c'est que si vous parlez d'unités de mesure en jours (ou plus), le rendu calendaire est préférable car il effectuera tous les ajustements d'heure d'été pour vous.Vous pouvez utiliser la méthode de Calendar
pour en ajouter
Calendar.Component
à toutDate
. Vous pouvez créer une extension de date pour ajouter x minutes à votreUIDatePicker
date:Xcode 8 et Xcode 9 • Swift 3.0 et Swift 4.0
Ensuite, vous pouvez simplement utiliser la méthode d'extension pour ajouter des minutes à l'expéditeur (UIDatePicker):
Test de terrain de jeu:
la source
.date(byAdding:value:to)
revient-ilnil
? Sommes-nous sûrs de forcer le déballage ici?Swift 4 :
// ajouter 5 minutes à ce jour
// soustraire 5 minutes de la date
Swift 5.1:
la source
Vous pouvez faire de l'arithmétique des dates en utilisant
NSDateComponents
. Par exemple:C'est ce que vous voyez lorsque vous l'essayez dans la cour de récréation
la source
NSDate.init
avectimeIntervalSinceNow
:Ex:
la source
Enregistrez cette petite extension:
Ensuite, utilisez-le intuitivement comme:
la source
self.days * 30
et années:self.days * 365
. Ce n'est pas parfait car l'année peut avoir 366 jours et le mois peut être différent de 30 jours, mais c'est toujours mieux que 28/336.Vous pouvez utiliser dans swift 4 ou 5
production:
la source
Swift 3:
la source
Au cas où vous voudriez un horodatage unix
la source
Je pense que le plus simple sera
la source