2015-07-17 19 views
27

ho scritto il seguente codice per mostrare un datetime in un formato particolare:Visualizza AM/PM in maiuscolo in rapida

let formatter = NSDateFormatter() 
formatter.dateStyle = NSDateFormatterStyle.LongStyle 
formatter.timeStyle = .MediumStyle 
formatter.dateFormat = "HH:mm a 'on' MMMM dd, yyyy" 
let dateString = formatter.stringFromDate(newDate!) 
println(dateString) 

uscita

12:16 pm on July 17, 2015 

voglio mostrare 'pm' come 'PM '(in lettere maiuscole) e se il telefono ha un formato di 24 ore, AM/PM non dovrebbe apparire. Mi aiuti per favore.

risposta

76

È possibile impostare il DateFormatter amSymbol e pmSymbol come segue:

Xcode 8.3 • Swift 3.1

let formatter = DateFormatter() 
formatter.locale = Locale(identifier: "en_US_POSIX") 
formatter.dateFormat = "h:mm a 'on' MMMM dd, yyyy" 
formatter.amSymbol = "AM" 
formatter.pmSymbol = "PM" 

let dateString = formatter.string(from: Date()) 
print(dateString) // "4:44 PM on June 23, 2016\n" 
+0

Grazie per la risposta. Per me funziona. Ma quando il telefono ha un formato di 24 ore, AM/PM non dovrebbe apparire. possiamo raggiungere questo? –

+1

@LeoDabus In realtà, dal momento che iOS sovrascrive i formati 12/24 impostati nel formattatore con le impostazioni di sistema, a meno che non si imposti esplicitamente le impostazioni internazionali. Uno dei metodi http://stackoverflow.com/a/41817997/669586 – Sulthan

+0

Non funziona in Xcode 9.1 let formatter = DateFormatter() formatter.timeZone = TimeZone.current formatter.dateFormat = "hh: mm a" formatter.amSymbol = "AM" formatter.pmSymbol = "PM" –