如何以12小时格式获取当前时间?

5

我想要以12小时格式获取当前时间。 如果时间是18:36,则应该显示为06:35 PM。 为此,我使用了下面的代码,但它并没有给我所需的格式。 我得到的格式如下。

let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "h:mm a"
let date22 = dateFormatter.string(from: date)

1
此外,这个网站对于弄清楚你需要的东西来说是一个很好的工具:http://nsdateformatter.com/ - Losiowaty
你的问题不够清晰。原始时间输入是什么?是一个String还是一个Date - rmaddy
3个回答

5

请查看这个日期格式化指南。还有这个网站

let dateAsString = "6:35 PM"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "hh:mm a"
let date = dateFormatter.dateFromString(dateAsString)

dateFormatter.dateFormat = "HH:mm"
let date24 = dateFormatter.stringFromDate(date!)

1
值得一提的是,OP想要带有前导0的小时格式,而这个答案(尽管完全正确)不会包括前导0。简单的修复方法是添加第二个“h”,所以格式字符串应该是“hh:mm a”。 - Jacob King

2

Swift 2:

let date = NSDate() // return current time and date
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "hh:mm a" // for specifying the change to format hour:minute am/pm.
let dateInString = dateFormatter.stringFromDate(date) // provide current time in string formatted in 06:35 PM if current time is 18:35

print(dateInString)

Swift 4:

let date = NSDate()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "hh:mm a"
let dateInString = dateFormatter.string(from: date as Date)

在你的代码中

请注意 - 要使用Swift 3,NSDate需要更改为Date,而NSDateFormatter需要更改为DateFormatter。并且格式在Swift的不同版本之间不会发生变化。 - rmaddy
1
请提供您的代码建议,我能够获取时间为18:36而不是06:36 PM。 - TechChain

2

我也有同样的问题(我的后端传递的日期字符串以24小时制和UTC格式显示),所以我创建了一个函数,它完美地解决了这个问题。请看以下函数:

func getRequiredFormat(dateStrInTwentyFourHourFomat: String) -> String? {

    let dateFormatter = DateFormatter()
    dateFormatter.locale = Locale(identifier: "en_US_POSIX")
    dateFormatter.timeZone = TimeZone(abbreviation: "GMT")
    dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"

    if let newDate = dateFormatter.date(from: dateStrInTwentyFourHourFomat) {

        let timeFormat = DateFormatter()
        timeFormat.timeZone = TimeZone.autoupdatingCurrent
        timeFormat.locale = Locale(identifier: "en_US_POSIX")
        timeFormat.dateFormat = "hh:mm a"

        let requiredStr = timeFormat.string(from: newDate)
        return requiredStr
    } else {
        return nil
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接