Xcode schnell am / pm Zeit bis 24 Stunden Format

71

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.

user3772
quelle
UIKit importieren let date = Date () print ("Date:", date) let dateFormatter = DateFormatter () dateFormatter.dateFormat = "h: mm a" let Date12Hr = dateFormatter.string (from: date) print ("12 Stunden formatiert) Datum: ", Datum12) dies funktioniert gut in Spielplatz oder Simulator .. während läuft in Gerät ist es nicht konvertiert ???
Santosh

Antworten:

157

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.

Geben Sie hier die Bildbeschreibung ein

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!)
Ian
quelle
11
Dieser Code gibt null an, wenn die Gerätezeit im 24-Stunden-Format vorliegt. Irgendein Rat?
Tejinder
14
Versuchen Sie dies. Fügen Sie die folgende Zeile nach der DateFormatter-Deklaration hinzu. dateFormatter.locale = NSLocale (localeIdentifier: "en_US_POSIX") als Gebietsschema! Dies löst mein Problem.
Nipul Daki
58

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

Azharhussain Shaikh
quelle
10
Beim Wechsel vom 24-Stunden- zum 12-Stunden-Format muss dateFormatter.locale = Locale (Bezeichner: "en_US_POSIX") hinzugefügt werden, um das Ignorieren des Gerätegebietsschemas zu erzwingen.
Sunly
es ist nur eine Umrechnung des Datums!
Azharhussain Shaikh
2
Sie können versuchen, das Gerät auf das 24-Stunden-Format einzustellen. Der obige Code funktioniert in meinem Fall nicht.
Sunly
11

Swift 3 *

Code zum Konvertieren von 12 Stunden (dh AM und PM) in ein 24-Stunden- Format, das Folgendes umfasst:

Stunden: Minuten: Sekunden: AM / PM bis Stunden: Minuten: Sekunden

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

19:05:45 Uhr

Ausgabe

19:05:45

Ähnlich

Code zum Konvertieren des 24-Stunden- in das 12-Stunden- Format (dh AM und PM), das Folgendes umfasst:

Stunden: Minuten: Sekunden bis Stunden: Minuten: Sekunden: AM / PM

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

19:05:45

Ausgabe

19:05:45 Uhr

Anupam Mishra
quelle
5

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)
user550088
quelle
4

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

Shobhakar Tiwari
quelle
Bei dieser Frage geht es darum, von 12 Stunden auf 24 Stunden zu wechseln. In dieser Antwort geht es darum, in die andere Richtung zu gehen.
Abizern
1
Nicht richtige Antwort !! Sie sind verwirrt, weil Sie mit 12:41:42 testen. Versuchen Sie es mit 13 Uhr oder höher.
TheTiger
Hallo, wenn ein Benutzer 6:11 Uhr eingibt, wie kann ich in diesem Format auf 2019-03-09 13:38:32 +0000 konvertieren
Gorib Developer
Sie müssen also das aktuelle Datum mit der Uhrzeit verwenden (Eingabe vom Benutzer bereitgestellt)
Shobhakar Tiwari
Dies funktioniert gut in Spielplatz und Simulator .. während läuft in Gerät ist es nicht konvertiert
SANTOSH
3

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!) : ""
}
Bibin Joseph
quelle
1

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
}
Rishabh Dugar
quelle
Sollte es nicht sein (Stunde> = 12) - da 12.00 Uhr 12 Uhr und 00.00 Uhr Mitternacht 12 Uhr ist
iKK
1
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())
dmitriy koliush
quelle
Dies ist keine militärische Zeit.
WikipediaBrown
1

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

Fernando Bustos
quelle
1

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)
Bigbubble
quelle
0

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.

bei Fertigstellung
quelle