Swift versione (3.x) di due soluzioni più popolari in forma di estensione Data:
extension Date {
static var is24HoursFormat_1 : Bool {
let dateString = Date.localFormatter.string(from: Date())
if dateString.contains(Date.localFormatter.amSymbol) || dateString.contains(Date.localFormatter.pmSymbol) {
return false
}
return true
}
static var is24HoursFormat_2 : Bool {
let format = DateFormatter.dateFormat(fromTemplate: "j", options: 0, locale: Locale.autoupdatingCurrent)
return !format!.contains("a")
}
private static let localFormatter : DateFormatter = {
let formatter = DateFormatter()
formatter.locale = Locale.autoupdatingCurrent
formatter.timeStyle = .short
formatter.dateStyle = .none
return formatter
}()
}
Usage:
Date.is24HoursFormat_1
Date.is24HoursFormat_2
Swift (2.0) versione di due soluzioni più popolari sotto forma di estensione NSDate:
extension NSDate {
class var is24HoursFormat_1 : Bool {
let dateString = NSDate.localFormatter.stringFromDate(NSDate())
if dateString.containsString(NSDate.localFormatter.AMSymbol) || dateString.containsString(NSDate.localFormatter.PMSymbol) {
return false
}
return true
}
class var is24HoursFormat_2 : Bool {
let format = NSDateFormatter.dateFormatFromTemplate("j", options: 0, locale: NSLocale.autoupdatingCurrentLocale())
return !format!.containsString("a")
}
private static let localFormatter : NSDateFormatter = {
let formatter = NSDateFormatter()
formatter.locale = NSLocale.autoupdatingCurrentLocale()
formatter.timeStyle = .ShortStyle
formatter.dateStyle = .NoStyle
return formatter
}()
}
Si prega di notare che Apple dice il seguente su NSDateFormatter (Date Formatters):
Creazione di una data di formattazione non è un'operazione a basso costo. Se è probabile che utilizzi frequentemente un formattatore, è in genere più efficiente memorizzare nella cache una singola istanza piuttosto che creare e disporre di più istanze. Un approccio consiste nell'utilizzare una variabile statica.
Questo è il motivo per statica diamo
In secondo luogo si dovrebbe usare NSLocale.autoupdatingCurrentLocale() (per is24HoursFormat_1), in questo modo otterrete sempre lo stato attuale vero e proprio.
Wow, grazie. Ho fatto una ricerca su Google che normalmente mostra i risultati di Stack Overflow ma sono venuto completamente vuoto! – Darren