Ich versuche, eine am / pm-Formatzeit in eine 24-Stunden-Formatzeit umzuwandeln
6:35 PM to 18:35
Ich habe diesen Code auf dem Spielplatz ausprobiert, aber es scheint nicht zu funktionieren, wenn ich die Zeit alleine lasse
let dateAsString = "02/12/15, 6:35 PM"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "HH"
let date = dateFormatter.dateFromString(dateAsString) //returns nil
Weiß jemand, wie man das erreicht?
Vielen Dank.
swift
time
nsdateformatter
user3772
quelle
quelle
Antworten:
Konvertieren Sie es einfach mit NSDateFormatter und dem Format "h: mm a" in ein Datum und konvertieren Sie es mit dem Format "HH: mm" zurück in eine Zeichenfolge. Lesen Sie diese Anleitung zur Datumsformatierung, um sich mit diesem Material vertraut zu machen.
let dateAsString = "6:35 PM" let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "h:mm a" let date = dateFormatter.dateFromString(dateAsString) dateFormatter.dateFormat = "HH:mm" let date24 = dateFormatter.stringFromDate(date!)
quelle
Swift 3
Zeitformat 24 Stunden bis 12 Stunden
let dateAsString = "13:15" let dateFormatter = DateFormatter() dateFormatter.dateFormat = "HH:mm" let date = dateFormatter.date(from: dateAsString) dateFormatter.dateFormat = "h:mm a" let Date12 = dateFormatter.string(from: date!) print("12 hour formatted Date:",Date12)
Die Ausgabe erfolgt im 12-Stunden-Format. Datum: 13:15 Uhr
Zeitformat 12 Stunden bis 24 Stunden
let dateAsString = "1:15 PM" let dateFormatter = DateFormatter() dateFormatter.dateFormat = "h:mm a" let date = dateFormatter.date(from: dateAsString) dateFormatter.dateFormat = "HH:mm" let Date24 = dateFormatter.string(from: date!) print("24 hour formatted Date:",Date24)
Die Ausgabe erfolgt im 24-Stunden-Format. Datum: 13:15 Uhr
quelle
Swift 3 *
Code zum Konvertieren von 12 Stunden (dh AM und PM) in ein 24-Stunden- Format, das Folgendes umfasst:
func timeConversion24(time12: String) -> String { let dateAsString = time12 let df = DateFormatter() df.dateFormat = "hh:mm:ssa" let date = df.date(from: dateAsString) df.dateFormat = "HH:mm:ss" let time24 = df.string(from: date!) print(time24) return time24 }
Eingang
Ausgabe
Ähnlich
Code zum Konvertieren des 24-Stunden- in das 12-Stunden- Format (dh AM und PM), das Folgendes umfasst:
func timeConversion12(time24: String) -> String { let dateAsString = time24 let df = DateFormatter() df.dateFormat = "HH:mm:ss" let date = df.date(from: dateAsString) df.dateFormat = "hh:mm:ssa" let time12 = df.string(from: date!) print(time12) return time12 }
Eingang
Ausgabe
quelle
Unten ist die schnelle 3-Version der Lösung -
let dateAsString = "6:35:58 PM" let dateFormatter = DateFormatter() dateFormatter.dateFormat = "h:mm:ss a" let date = dateFormatter.date(from: dateAsString) dateFormatter.dateFormat = "HH:mm:ss" let date24 = dateFormatter.string(from: date!) print(date24)
quelle
Swift Version 3.0.2, Xcode Version 8.2.1 (8C1002) (12-Stunden-Format):
func getTodayString() -> String{ let formatter = DateFormatter() formatter.dateFormat = "h:mm:ss a " formatter.amSymbol = "AM" formatter.pmSymbol = "PM" let currentDateStr = formatter.string(from: Date()) print(currentDateStr) return currentDateStr }
AUSGABE: 00:41:42 Uhr
Fühlen Sie sich frei zu kommentieren. Vielen Dank
quelle
Verwenden Sie diese Funktion für die Datumskonvertierung. Sie funktioniert einwandfrei, wenn Ihr Gerät innerhalb von 24/12 Stunden formatiert ist
func convertDateFormater(fromFormate:String,toFormate:String,_ dateString: String) -> String{ let formatter = DateFormatter() formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") as Locale formatter.dateFormat = fromFormate let date = formatter.date(from: dateString) formatter.dateFormat = toFormate return date != nil ? formatter.string(from: date!) : "" }
quelle
Hier ist Code für anders herum
Für Swift 3
func amAppend(str:String) -> String{ var temp = str var strArr = str.characters.split{$0 == ":"}.map(String.init) var hour = Int(strArr[0])! var min = Int(strArr[1])! if(hour > 12){ temp = temp + "PM" } else{ temp = temp + "AM" } return temp }
quelle
let calendar = Calendar.current let hours = calendar.component(.hour, from: Date()) let minutes = calendar.component(.minute, from: Date()) let seconds = calendar.component(.second, from: Date())
quelle
Leider hat Apple Vorrang vor dem Datumsformat des Geräts. Ändern Sie daher in einigen Fällen das Format schnell auf 12 Stunden
Um dies zu beheben, müssen Sie setLocalizedDateFormatFromTemplate anstelle von dateFormat verwenden und AM und PM ausblenden
let formatter = DateFormatter() formatter.setLocalizedDateFormatFromTemplate("HH:mm:ss a") formatter.amSymbol = "" formatter.pmSymbol = "" formatter.timeZone = TimeZone(secondsFromGMT: 0) var prettyDate = formatter.string(from: Date())
Sie können einen sehr nützlichen Beitrag mit weiteren Informationen unter https://prograils.com/posts/the-curious-case-of-the-24-hour-time-format-in-swift überprüfen
quelle
Hier ist die Antwort mit mehr zusätzlichem Format.
** Xcode 12, Swift 5.3 **
let dateFormatter = DateFormatter() dateFormatter.dateFormat = "HH:mm:ss" var dateFromStr = dateFormatter.date(from: "12:16:45")! dateFormatter.dateFormat = "hh:mm:ss a 'on' MMMM dd, yyyy" //Output: 12:16:45 PM on January 01, 2000 dateFormatter.dateFormat = "E, d MMM yyyy HH:mm:ss Z" //Output: Sat, 1 Jan 2000 12:16:45 +0600 dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" //Output: 2000-01-01T12:16:45+0600 dateFormatter.dateFormat = "EEEE, MMM d, yyyy" //Output: Saturday, Jan 1, 2000 dateFormatter.dateFormat = "MM-dd-yyyy HH:mm" //Output: 01-01-2000 12:16 dateFormatter.dateFormat = "MMM d, h:mm a" //Output: Jan 1, 12:16 PM dateFormatter.dateFormat = "HH:mm:ss.SSS" //Output: 12:16:45.000 dateFormatter.dateFormat = "MMM d, yyyy" //Output: Jan 1, 2000 dateFormatter.dateFormat = "MM/dd/yyyy" //Output: 01/01/2000 dateFormatter.dateFormat = "hh:mm:ss a" //Output: 12:16:45 PM dateFormatter.dateFormat = "MMMM yyyy" //Output: January 2000 dateFormatter.dateFormat = "dd.MM.yy" //Output: 01.01.00 //Output: Customisable AP/PM symbols dateFormatter.amSymbol = "am" dateFormatter.pmSymbol = "Pm" dateFormatter.dateFormat = "a" //Output: Pm // Usage var timeFromDate = dateFormatter.string(from: dateFromStr) print(timeFromDate)
quelle
In meinem Fall verwende ich hier eine Funktion, mit der ich ein Etikett mit dem normalen Zeitformat aktualisiere und danach das 24-Stunden-Format der ausgewählten Zeit speichere, um einige andere Aufgaben zu erledigen.
Hier ist mein Code ...
func timeUpdate(sender: NSDate) { let timeSave = NSDateFormatter() //Creating first object to update time label as 12hr format with AM/PM timeSave.timeStyle = NSDateFormatterStyle.ShortStyle //Setting the style for the time selection. self.TimeShowOutlet.text = timeSave.stringFromDate(sender) // Getting the string from the selected time and updating the label as 1:40 PM let timeCheck = NSDateFormatter() //Creating another object to store time in 24hr format. timeCheck.dateFormat = "HH:mm:ss" //Setting the format for the time save. let time = timeCheck.stringFromDate(sender) //Getting the time string as 13:40:00 self.timeSelectedForCheckAvailability = time //At last saving the 24hr format time for further task. }
Nachdem Sie diese Funktion geschrieben haben, können Sie sie hier aufrufen, wo Sie die Uhrzeit aus der Datums- / Zeitauswahl auswählen.
Danke, hoffe das hat geholfen.
quelle