Comment obtenir la date et l'heure locales dans Swift?
let last_login = String(NSDate.date())
J'ai déjà trouvé la réponse.
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy HH:mm"
let dateInFormat = dateFormatter.stringFromDate(NSDate())
mise à jour: Xcode 8.2.1 • Swift 3.0.2
Vous pouvez également utiliser la méthode Date description(with locale: Locale?)
pour obtenir la description de l'heure localisée de l'utilisateur:
Une représentation sous forme de chaîne de la date, en utilisant les paramètres régionaux donnés, ou si les paramètres régionaux l'argument est nul, au format international AAAA-MM-JJ HH: MM: SS ± HHMM, où ± HHMM représente le décalage de fuseau horaire en heures et minutes de l’heure UTC (par exemple, «2001-03-24 10:45:32 +0600»).
description (avec locale: Locale?)
Date().description(with: .current) // "Monday, February 9, 2015 at 05:47:51 Brasilia Summer Time"
La méthode ci-dessus n'est pas destinée à être utilisée lors de l'affichage de la date et de l'heure à l'utilisateur. C'est à des fins de débogage seulement.
Lors de l'affichage de la date et de l'heure locales (fuseau horaire actuel) à l'utilisateur, vous devez respecter les paramètres régionaux et les paramètres de l'appareil de l'utilisateur. La seule chose que vous pouvez contrôler est le style de la date et de l'heure (court, moyen, long ou complet). Pour plus d’informations à ce sujet, vous pouvez consulter ce post shortDateTime .
Si vous souhaitez créer un horodatage UTC à des fins de codage (ISO 8601), vous pouvez consulter cette publication ISO8601
utiliser NSDateFormatter, soit en définissant le format
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "hh:mm"
println(dateFormatter.stringFromDate(NSDate()))
ou styles
dateFormatter.dateStyle = .NoStyle
dateFormatter.timeStyle = .MediumStyle
let expiryDate: Date = ...
let localizedDateString = DateFormatter.localizedString(from: expiryDate, dateStyle: .medium, timeStyle: .short)
"10 sept. 2017, 14h37"
Pour obtenir la date et l'heure actuelles
let currentDate = Date()
print(currentDate) //this will return current date and time
mais ce sera dans le type de date pour convertir la date en chaîne
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy HH:mm" //give the formate according to your need
let dateStr = dateFormatter.string(from: currentDate) //which will give the string of current date and time in required dateformate
La réponse de Leo est plutôt bonne. Je voulais juste ajouter un moyen de l'utiliser comme une propriété calculée.
var currentTime: String {
get {
return Date().description(with: Locale.current)
}
}
Utilisez-le comme suit:
print(currentTime)
Vous devez utiliser NSDateFormatter
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MMMM dd, yyyy HH:mm"
dateFormatter.locale = "en" // Change "en" to change the default locale if you want
let stringDate = dateFormatter.stringFromDate(date)
Pour récupérer les formats de chaîne les plus courants (lorsqu'il s'agit de requêtes et de bases de données):
Swift 4
2019-01-09T01: 07: 04Z (RFC3339 à l'heure GMT/Zoulou)
let f = ISO8601DateFormatter()
f.formatOptions = [.withInternetDateTime]
let s = f.string(from: Date())
2019-01-08T17: 04: 16-08: 00 (RFC3339 indiquant le fuseau horaire local)
let f = ISO8601DateFormatter()
f.formatOptions = [.withInternetDateTime]
f.timeZone = TimeZone.current
let s = f.string(from: Date())
2019-01-09 (horodatage standard à l'heure GMT/Zulu)
let f = ISO8601DateFormatter()
f.formatOptions = [.withFullDate, .withDashSeparatorInDate]
let s = f.string(from: Date())
2019-01-08 (comptabilisation de l'horodatage standard pour le fuseau horaire local)
let f = ISO8601DateFormatter()
f.formatOptions = [.withFullDate, .withDashSeparatorInDate]
f.timeZone = TimeZone.current
let s = f.string(from: Date())
Les quatre chaînes représentent exactement la même date et l'heure. L'un des principaux avantages du format RFC3339 (et des horodatages tronqués) est qu'ils peuvent être triés par des opérateurs standard inférieurs à, supérieurs à, ce qui supprime la nécessité de convertir les objets de date serveur et les objets de date client.