我刚刚完成了我的第一个应用程序并且已经在本地化了不同的功能。我的应用程序中有一个功能,我不确定是否可以进行本地化。
基本上,当用户打开我的应用时,他们会收到一条消息,上面写着“下午好”,“早上好”等信息。或者“晚上好”。我创建了一些代码来检查时间的前缀以决定要显示的消息,但是由于不同的国家/地区格式化时间不同,我不确定如何将其本地化。
我是否必须找出它确实有效的国家/地区并添加if语句来决定该应用是否可以显示此问候语?否则,根据他们的名字显示问候语?
这是我的代码:
var date = NSDate()
let dateFormatter = NSDateFormatter()
dateFormatter.timeStyle = .ShortStyle
let time = dateFormatter.stringFromDate(date)
var currentTimeOfDay = ""
if time.hasPrefix("0") {
currentTimeOfDay = "morning"
} else if time.hasPrefix("10") {
currentTimeOfDay = "morning"
} else if time.hasPrefix("11") {
currentTimeOfDay = "morning"
} else if time.hasPrefix("12") {
currentTimeOfDay = "morning"
} else if time.hasPrefix("13") {
currentTimeOfDay = "afternoon"
} else if time.hasPrefix("14") {
currentTimeOfDay = "afternoon"
} else if time.hasPrefix("15") {
currentTimeOfDay = "afternoon"
} else if time.hasPrefix("16") {
currentTimeOfDay = "afternoon"
} else if time.hasPrefix("17") {
currentTimeOfDay = "afternoon"
} else if time.hasPrefix("18") {
currentTimeOfDay = "evening"
} else if time.hasPrefix("19") {
currentTimeOfDay = "evening"
} else if time.hasPrefix("2") {
currentTimeOfDay = "evening"
}
答案 0 :(得分:6)
您不应使用本地化的时间字符串来确定当天的时间。
使用NSCalendar
和NSDateComponents
:
let now = NSDate()
let cal = NSCalendar.currentCalendar()
let comps = cal.components(.CalendarUnitHour, fromDate: now)
let hour = comps.hour
现在hour
是0 ... 23范围内的整数。
var currentTimeOfDay = ""
switch hour {
case 0 ... 12:
currentTimeOfDay = "morning"
case 13 ... 17:
currentTimeOfDay = "afternoon"
default:
currentTimeOfDay = "evening"
}
答案 1 :(得分:2)
对于那些使用 Swift 4.0
的人 let dateComponents = Calendar.current.dateComponents([.hour], from: Date())
if let hour = dateComponents.hour {
let greetingString: String
switch hour {
case 0..<12:
greetingString = "Good morning"
case 12..<17:
greetingString = "Good afternoon"
default:
greetingString = "Good evening"
}
}