iOS Swift4 如何仅使用 DateFormatter() 打印短工作日?

iOS Swift4 how to print short weekday only using DateFormatter()?

我想让日期格式化程序只打印简短的工作日标签,例如 "Mon, Tue, Wed"。

将日期转换为 3 个字母的工作日字符串的正确日期格式是什么?

let formatter = DateFormatter()
formatter.dateFormat = "DDD" //prints 278 and like

好像我每隔几个月就要重新学习这些东西:

let formatter = DateFormatter()
formatter.dateFormat = "EEE"


E..EEE  Tue Abbreviated Day of week name, format style.
EEEE    Tuesday Wide
EEEEE   T   Narrow
EEEEEE  Tu  Short

使用这个http://nsdateformatter.com

Monday, Oct 8, 2018 = EEEE, MMM d, yyyy

10/08/2018 = MM/dd/yyyy

10-08-2018 04:29 = MM-dd-yyyy HH:mm

Oct 8, 4:29 AM = MMM d, h:mm a

October 2018 = MMMM yyyy

Oct 8, 2018 = MMM d, yyyy

Mon, 8 Oct 2018 04:29:53 +0000 = E, d MMM yyyy HH:mm:ss Z

2018-10-08T04:29:53+0000 = yyyy-MM-dd'T'HH:mm:ssZ

08.10.18 = dd.MM.yy

一个非常常见的用例是从 Date.

检索工作日
let weekdayIndex = Calendar.current.component(.weekday, from: Date()) - 1
let weekday = DateFormatter().shortWeekdaySymbols[weekdayIndex]
print(weekday)

// Outputs: Fri, Tue or whatever day is today

第一行的 -1 是因为 Calendar.current.component(.weekday, from: Date()) returns 范围从 1 到 7,而 shortWeekdaySymbols 期望索引范围从 0 到6.

注意如果你想获取其他格式如Friday而不是Fri,你可以使用其他列出的方法here.