【问题标题】:Show AM/PM in capitals in swift以大写形式快速显示 AM/PM
【发布时间】: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。请帮我。

【问题讨论】:

    标签: swift date dateformatter


    【解决方案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 格式。方法之一stackoverflow.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)
    

    【讨论】:

      猜你喜欢
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 2016-12-16
      • 2016-09-15
      • 1970-01-01
      • 2013-08-19
      • 1970-01-01
      • 2011-10-14
      相关资源
      最近更新 更多