我想要以12小时格式获取当前时间。 如果时间是18:36,则应该显示为06:35 PM。 为此,我使用了下面的代码,但它并没有给我所需的格式。 我得到的格式如下。
let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "h:mm a"
let date22 = dateFormatter.string(from: date)
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)
NSDate
需要更改为Date
,而NSDateFormatter
需要更改为DateFormatter
。并且格式在Swift的不同版本之间不会发生变化。 - rmaddy我也有同样的问题(我的后端传递的日期字符串以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
}
}
String
还是一个Date
? - rmaddy