以大写形式快速显示 AM/PM
Posted
技术标签:
【中文标题】以大写形式快速显示 AM/PM【英文标题】:Show AM/PM in capitals in swift 【发布时间】:2015-07-17 05:53:34 【问题描述】:我编写了以下代码以特定格式显示日期时间:
let formatter = NSDateFormatter()
formatter.dateStyle = NSDateFormatterStyle.LongStyle
formatter.timeStyle = .MediumStyle
formatter.dateFormat = "HH:mm a 'on' MMMM dd, yyyy"
let dateString = formatter.stringFromDate(newDate!)
println(dateString)
输出
12:16 pm on July 17, 2015
我想将“pm”显示为“PM”(大写),如果手机具有 24 小时格式,则不应出现 AM/PM。请帮我。
【问题讨论】:
【参考方案1】:您可以如下设置 DateFormatter amSymbol 和 pmSymbol:
Xcode 8.3 • Swift 3.1
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "h:mm a 'on' MMMM dd, yyyy"
formatter.amSymbol = "AM"
formatter.pmSymbol = "PM"
let dateString = formatter.string(from: Date())
print(dateString) // "4:44 PM on June 23, 2016\n"
【讨论】:
感谢您的回复。这个对我有用。但是当手机有 24 小时格式时,AM/PM 不应该出现。我们能做到吗? @LeoDabus 实际上,除非您明确设置区域设置,否则 ios 会用系统设置覆盖格式化程序中设置的 12/24 格式。方法之一***.com/a/41817997/669586 不适用于 Xcode 9.1 let formatter = DateFormatter() formatter.timeZone = TimeZone.current formatter.dateFormat = "hh:mm a" formatter.amSymbol = "AM" formatter.pmSymbol = "PM " @DarshanMothreja 无需将时区设置为当前。日期格式化程序的默认时区它已经是当前时区。但是在使用固定日期格式时,您应该将其语言环境设置为"en_US_POSIX"
它在这里为我工作"08:36 AM"
。尝试创建一个新的 Playground 文件并在那里进行测试【参考方案2】:
在一处添加了一些格式。希望有人得到帮助。
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)
【讨论】:
以上是关于以大写形式快速显示 AM/PM的主要内容,如果未能解决你的问题,请参考以下文章
在 UITextView 中以大写形式显示文本并从 shouldChangeTextIn 中获取新文本,以保持原始文本和输入文本的大小写
c_cpp 管道示例:从进程中读取字符并在另一个进程中以大写形式显示