iOS DateFormatter dateFormat fromTemplate 中允许的格式说明符是什么?
What are the format specifiers allowed in iOS DateFormatter dateFormat fromTemplate?
我找不到 DateFormatter.dateFormat(fromTemplate:options:locale:)
的模板参数中允许的格式说明符列表。
- dateFormat 指示我...
- Date and Time Programming Guide。 None 这些页面列出了格式说明符。所以我查看了建议的相关文档...
- Date and Time Programming Guide for Core Foundation 没有列表。
- Data Formatting Guide 有一个章节标题 "Use Format Strings to Specify Custom Formats" 但它只是让我回到上面的 (1)。数据格式化指南中的其他页面 None 具有格式说明符。
有谁知道 Apple 在哪里记录了这些说明符?
我将通过一些示例来扩展评论中的答案。对于 iOS 7 及更高版本,格式代码位于此处:http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns。 table 太大,无法在此处全部复制,但这里有一些帮助我入门。有关所有格式和解释,请参阅 link。
- 时代:G(公元),GGGG(纪元)
- 年份:y (1984), yy (84), yyyy (1984)
- 月份:M,MM,MMM,MMMM,MMMMM。还有:L
- 一个月中的第几天:d, dd
- 星期几名称:E、EEEE、EEEEEE、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"
我找不到 DateFormatter.dateFormat(fromTemplate:options:locale:)
的模板参数中允许的格式说明符列表。
- dateFormat 指示我...
- Date and Time Programming Guide。 None 这些页面列出了格式说明符。所以我查看了建议的相关文档...
- Date and Time Programming Guide for Core Foundation 没有列表。
- Data Formatting Guide 有一个章节标题 "Use Format Strings to Specify Custom Formats" 但它只是让我回到上面的 (1)。数据格式化指南中的其他页面 None 具有格式说明符。
有谁知道 Apple 在哪里记录了这些说明符?
我将通过一些示例来扩展评论中的答案。对于 iOS 7 及更高版本,格式代码位于此处:http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns。 table 太大,无法在此处全部复制,但这里有一些帮助我入门。有关所有格式和解释,请参阅 link。
- 时代:G(公元),GGGG(纪元)
- 年份:y (1984), yy (84), yyyy (1984)
- 月份:M,MM,MMM,MMMM,MMMMM。还有:L
- 一个月中的第几天:d, dd
- 星期几名称:E、EEEE、EEEEEE、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"