格式化时间Swift上午/下午/晚上/任何时间

And*_*ius 7 nsdateformatter swift

我试图找到一种方法来获取当天的时间.显然,有一种简单的方法可以将它应用于显示早晨,晚上 如果您对一种语言的静态单词感到满意.有没有办法根据Locale制作它?NSDateComponentsFormatter似乎没有做到这一点.

vad*_*ian 24

不幸的是,没有内置的解决方案 - NSDateFormatter的相对格式仅适用于每日基础.

获取小时Calendar.current.component(.hour, from: Date())并使用范围开关并NSLocalizedString()本地化字符串.

例如:

// let hour = NSCalendar.currentCalendar().component(.Hour, fromDate: NSDate()) Swift 2 legacy
let hour = Calendar.current.component(.hour, from: Date())

switch hour {
case 6..<12 : print(NSLocalizedString("Morning", comment: "Morning"))
case 12 : print(NSLocalizedString("Noon", comment: "Noon"))
case 13..<17 : print(NSLocalizedString("Afternoon", comment: "Afternoon"))
case 17..<22 : print(NSLocalizedString("Evening", comment: "Evening"))
default: print(NSLocalizedString("Night", comment: "Night"))
}
Run Code Online (Sandbox Code Playgroud)

创建文件localizable.strings并添加所需的本地化.