Xcode swift am/pm time to 24 hour format

后端 未结 11 1063
甜味超标
甜味超标 2020-11-28 04:40

I am trying to convert a am/pm format time to a 24 hour format time

6:35 PM to 18:35

I tried this piece of code on playground but it doesnt

相关标签:
11条回答
  • 2020-11-28 05:27

    Swift version 3.0.2 , Xcode Version 8.2.1 (8C1002) (12 hr 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 
    }
    

    OUTPUT : 12:41:42 AM

    Feel free to comment. Thanks

    0 讨论(0)
  • 2020-11-28 05:31
    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())
    
    0 讨论(0)
  • 2020-11-28 05:34

    Unfortunately apple priority the device date format, so in some cases against what you put, swift change your format to 12hrs

    To fix this is necessary to use setLocalizedDateFormatFromTemplate instead of dateFormat an hide the AM and PM

    let formatter = DateFormatter()
    formatter.setLocalizedDateFormatFromTemplate("HH:mm:ss a")
    formatter.amSymbol = ""
    formatter.pmSymbol = ""
    formatter.timeZone = TimeZone(secondsFromGMT: 0)
    var prettyDate = formatter.string(from: Date())
    

    You can check a very useful post with more information detailed in https://prograils.com/posts/the-curious-case-of-the-24-hour-time-format-in-swift

    0 讨论(0)
  • 2020-11-28 05:35

    Swift 3 *

    Code to convert 12 hours (i.e. AM and PM) to 24 hours format which includes-

    Hours:Minutes:Seconds:AM/PM to Hours:Minutes:Seconds

    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
    }
    

    Input

    07:05:45PM

    Output

    19:05:45

    Similarly

    Code to convert 24 hours to 12 hours (i.e. AM and PM) format which includes-

    Hours:Minutes:Seconds to Hours:Minutes:Seconds: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
    }
    

    Input

    19:05:45

    Output

    07:05:45PM

    0 讨论(0)
  • 2020-11-28 05:37

    Here is code for other way around

    For 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
    }
    
    0 讨论(0)
提交回复
热议问题