2015-07-17 8 views
27

napisałem poniższy kod, żeby pokazać datetime w określonym formacie:Pokaż AM/PM w stolicach w szybkim

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) 

Output

12:16 pm on July 17, 2015 

chcę pokazać 'pm' jako „PM "(w stolicach) i jeśli telefon ma format 24-godzinny, wówczas AM/PM nie powinien pojawić się. Proszę pomóż mi.

Odpowiedz

76

można ustawić dateFormatter amSymbol i pmSymbol następująco:

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

Dzięki za odpowiedź. Mi to pasuje. Ale kiedy telefon ma format 24-godzinny, wtedy AM/PM nie powinien się pojawić. możemy to osiągnąć? –

+1

@LeoDabus Możesz faktycznie, ponieważ iOS nadpisuje formaty 12/24 ustawione w formatyzatorze z ustawieniami systemowymi, chyba że ustawisz wyraźnie ustawienia narodowe. Jedną z metod http://stackoverflow.com/a/41817997/669586 – Sulthan

+0

Nie działa w Xcode 9.1 let formater = dateFormatter() formatter.timeZone = TimeZone.current formatter.dateFormat = "hh: mm A" formatter.amSymbol = "AM" formatter.pmSymbol = "PM" –