Swift (3.x) versión de dos soluciones más populares en forma de extensión Fecha:
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
}()
}
Uso:
Date.is24HoursFormat_1
Date.is24HoursFormat_2
Swift (2.0) versión de dos soluciones más populares en forma de extensión 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
}()
}
Tenga en cuenta que Apple dice siguiente en NSDateFormatter (Date Formatters):
Crear un formateador fecha no es una operación barata. Si es probable que use un formateador con frecuencia, generalmente es más eficiente cachear una sola instancia que crear y deshacerse de varias instancias. Un enfoque es usar una variable estática.
Esa es la razón por la estática vamos
En segundo lugar se debe utilizar NSLocale.autoupdatingCurrentLocale() (para is24HoursFormat_1), de esa manera que siempre obtendrá el estado actual real.
Wow, gracias. Hice una búsqueda en Google que normalmente muestra los resultados de desbordamiento de pila, pero salí completamente en blanco. – Darren