xcode快速将上午/下午的时间转换为24小时格式

问题描述 投票:59回答:8

我正在尝试将上午/下午的格式时间转换为24小时的格式时间

6:35 PM to 18:35

我在操场上尝试了这段代码,但似乎没有如果我花时间去工作,就可以工作

let dateAsString = "02/12/15, 6:35 PM"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "HH"
let date = dateFormatter.dateFromString(dateAsString) //returns nil

有人知道如何做到这一点吗?

谢谢。

swift time
8个回答
132
投票

只需使用NSDateFormatter和“ h:mm a”格式将其转换为日期,然后使用“ HH:mm”格式将其转换回字符串。请查看此date formatting guide,以使自己熟悉此材料。

enter image description here

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!)

47
投票

Swift 3

时间格式为24小时至12小时

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)

输出将采用12小时格式,日期:1:15 PM

时间格式12小时至24小时

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)

输出将是24小时格式的日期:13:15


6
投票

Swift 3 *

12小时(即上午和下午)转换为24小时的代码格式,其中包括-

小时:分钟:秒:上午/下午至小时:分钟:秒

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
}

输入

07:05:45 PM

输出

19:05:45

类似

24小时转换为12小时(即AM和PM)的代码格式,其中包括-

小时:分钟:秒至小时:分钟:秒: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
}

输入

19:05:45

输出

07:05:45 PM


5
投票

下面是该解决方案的快速3版本-

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)

4
投票

Swift版本3.0.2,Xcode版本8.2.1(8C1002)(12小时格式):

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 
}

输出: 12:41:42 AM

随时发表评论。谢谢


1
投票

这里是其他方法的代码

对于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
投票

我在这种情况下使用的功能是通过正常时间格式更新标签,然后将所选时间的24小时格式存储为其他任务。

这是我的代码...

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.
}

编写此函数后,您可以在从日期/时间选择器中选择时间的地方调用此函数。

谢谢,希望对您有所帮助。


0
投票
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())
© www.soinside.com 2019 - 2024. All rights reserved.