如何使用 NSDateFormatter 以语言环境友好的方式打印星期几?

How can I print a day of the week in a locale-friendly way using NSDateFormatter?

我注意到 NSDateFormatter 允许一个名为 .FullStyle 的枚举,它将打印 Tuesday, April 12, 1952 AD.

但是我如何才能以区域设置安全的方式打印 Tuesday

您需要使用 NSDateFormatter dateFormat = "cccc"。如果你需要日期格式模式的参考,你可以看看这个 link:

extension NSDate {
    struct Formatter {
        static let dayOfWeek: NSDateFormatter = {
            let formatter = NSDateFormatter()
            formatter.dateFormat = "cccc"   // Stand Alone local day of week
            return formatter
        }()
    }
    var dayOfWeek: String {
        return Formatter.dayOfWeek.stringFromDate(self)
    }
}

print(NSDate().dayOfWeek)   // Wednesday

Xcode 8 测试版 3 • Swift 3

extension DateFormatter {
    convenience init(dateFormat: String) {
        self.init()
        self.dateFormat = dateFormat
    }
}

extension Date {
    struct Formatter {
        static let dayOfWeek = DateFormatter(dateFormat: "cccc")  // Stand Alone local day of week
    }
    var dayOfWeek: String {
        return Formatter.dayOfWeek.string(from: self)
    }
}

print(Date().dayOfWeek)   // Wednesday

您可以按照 Leo Dabus 的建议设置 formatter.dateFormat = "EEEE"

如果您有星期几,您可以将其用作格式化程序 weekdaySymbols 的索引。示例:

let formatter = NSDateFormatter()
let weekday = formatter.calendar.component(.Weekday, fromDate: NSDate())
let weekdaySymbol = formatter.weekdaySymbols[weekday]
// result: "Saturday" (for example)