web-dev-qa-db-fra.com

Swift - Obtenir la date et l'heure locales

Comment obtenir la date et l'heure locales dans Swift?

let last_login = String(NSDate.date())
18
Mohammad Nurdin

J'ai déjà trouvé la réponse.

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy HH:mm"
let dateInFormat = dateFormatter.stringFromDate(NSDate())
6
Mohammad Nurdin

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

41
Leo Dabus

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
6
vikingosegundo
let expiryDate: Date = ...
let localizedDateString = DateFormatter.localizedString(from: expiryDate, dateStyle: .medium, timeStyle: .short)

"10 sept. 2017, 14h37"

3
Warif Akhand Rishi

Swift 4

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
2
Ganesh Manickam

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)
2
ScottyBlades

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)
1
Hani Ibrahim

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.

0
bsod