ios - iOS DateFormatter dateFormat fromTemplate 中允许使用哪些格式说明符?

标签 ios nsdateformatter dateformatter

我找不到 DateFormatter.dateFormat(fromTemplate:options:locale:) 的模板参数中允许的格式说明符列表。

  1. dateFormat引导我去...
  2. Date and Time Programming Guide 。这些页面都没有列出格式说明符。所以我检查了建议的相关文档...
  3. Date and Time Programming Guide for Core Foundation没有列表。
  4. Data Formatting Guide有一个部分标题“使用格式字符串指定自定义格式”,但它只是让我回到上面的 (1)。数据格式化指南中的其他页面都没有格式说明符。

有谁知道 Apple 在哪里记录了这些说明符?

最佳答案

我将用一些例子来扩展评论中的答案。对于 iOS 7 及更高版本,格式代码位于:http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns 。该表太大,无法在此处复制所有内容,但这里有一些可以帮助我入门。请参阅该链接以获取所有格式和说明。

  • 时代:G (AD)、GGGG (Anno Domini)
  • 年份:y (1984)、yy (84)、yyyy (1984)
  • 月份:M、MM、MMM、MMMM、MMMMM。另:L
  • 一月中的某天:d, dd
  • 星期名称:E、EEEE、EEEEE、EEEEEE

这是一个 Playground 片段,我发现它有助于探索这些内容。

import Foundation

let components = DateComponents(
    calendar: Calendar(identifier: .gregorian), 
    timeZone: nil, 
    era: 1, 
    year: 1984, 
    month: 1, 
    day: 2, 
    hour: nil, minute: nil, second: nil, 
    nanosecond: nil, weekday: nil, 
    weekdayOrdinal: nil, quarter: nil, 
    weekOfMonth: nil, weekOfYear: nil, 
    yearForWeekOfYear: nil)
let aDate = Calendar(identifier: .gregorian).date(from: components)!
let en_US = Locale(identifier: "en_US")
var df = DateFormatter()
func formatdate(_ template: String) -> String {
    let custom = DateFormatter.dateFormat(fromTemplate: template, options: 0, locale: en_US)
    df.dateFormat = custom
    return df.string(from: aDate)
}

formatdate("Mdyyyy") // "1/2/1984"
formatdate("yyyyMMdd") // "01/02/1984"
formatdate("yyyyMMMdd") // "Jan 02, 1984"
formatdate("yyyyMMMMdd") // "January 02, 1984"
formatdate("yyyyMMMMMdd") // "J 02, 1984"
formatdate("yyyyG") // "1984 AD"
formatdate("yyyyGGGG") // "1984 Anno Domini"
formatdate("yyyyMMMddE") // "Mon, Jan 02, 1984"
formatdate("yyyyMMMddEEEE") // "Monday, Jan 02, 1984"
formatdate("yyyyMMMddEEEEE") // "M, Jan 02, 1984"

formatdate("MdYYYY") // "1/2/1984"
formatdate("YYYYMMdd") // "01/02/1984"
formatdate("YYYYMMMdd") // "Jan 02, 1984"
formatdate("YYYYMMMMdd") // "January 02, 1984"
formatdate("YYYYMMMMMdd") // "J 02, 1984"
formatdate("YYYYG") // "1984 AD"
formatdate("YYYYGGGG") // "1984 Anno Domini"
formatdate("YYYYMMMddE") // "Mon, Jan 02, 1984"
formatdate("YYYYMMMddEEEE") // "Monday, Jan 02, 1984"
formatdate("YYYYMMMddEEEEE") // "M, Jan 02, 1984"

关于ios - iOS DateFormatter dateFormat fromTemplate 中允许使用哪些格式说明符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55091213/

相关文章:

c++ - 忽略 iOS 应用程序中的库以针对模拟器进行编译

ios - 卡在为 Bluemix 推送创建 .p12 推送证书文件

ios - 任何 iOS 应用程序如何从解析中下载视频? swift

objective-c - 获得正确的 NSDate 值——这是最有效的方法吗?

iOS NSDateFormatter 即使是 UTC 也需要 NSLocale

iOS swift native 谷歌共享错误消息,因为用户必须登录

ios - 字符串中的日期不适用于特定日期

ios - 在 iOS 中将 UTC 日期时间转换为本地日期时间

swift - DateFormatter 在特定设备上返回 nil

swift - 与时间相关的计算