如何使用NSDateFormatter以区域友好的方式打印一周中的某一天?

时间:2016-04-09 00:37:32

标签: swift locale nsdateformatter

我注意到NSDateFormatter允许使用名为.FullStyle的枚举来打印Tuesday, April 12, 1952 AD

但是,我如何以区域安全的方式打印Tuesday

2 个答案:

答案 0 :(得分:3)

您需要使用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 beta 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

答案 1 :(得分:0)

你可以像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)