我希望根据一天中的时间显示和隐藏标签。我在商店使用它作为一种开放式标志。在周一至周五的上午8点至下午5点之间,标签显示,如果没有,则标签被隐藏。我无法弄清楚如何比较当前时间和开放时间以执行if / else语句。此外,我对日期并不了解,但如果前一个问题得到解决,则认为很容易。
这是我的代码。我没有添加太多因为我知道我所拥有的不适用于mktClock.stringValue> =“时间”。
//Set time
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "hh:mm:ss a zzz"
dateFormatter.timeZone = NSTimeZone(name: "US/Eastern")
dateString = dateFormatter.stringFromDate(date)
mktClock.stringValue = dateString as String
//Displays open if the market is open
if mktClock.stringValue >= "09:30:00 AM EDT" {
mktOpen.hidden = false
}else{
mktOpen.hidden = true
}
答案 0 :(得分:1)
试试这个:
func getDayOfWeek() -> Int {
let todayDate = NSDate()
let myCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)
let myComponents = myCalendar?.components(.Weekday, fromDate: todayDate)
let weekDay = myComponents?.weekday
return weekDay!
}
信用:https://stackoverflow.com/a/28866064/5143847
现在获得解决方案:
let dayOfWeek = getDayOfWeek()
if dayOfWeek > 1 && dayOfWeek < 7 {
let hour = NSCalendar.currentCalendar().component(.Hour, fromDate: NSDate())
if hour > 8 && hour < 13 {
mktOpen.hidden = false
} else {
//Before 8 or after 5
mktOpen.hidden = true
}
} else {
//Sunday or Saturday
mktOpen.hidden = true
}
let hour
信用:
答案 1 :(得分:0)
对于正在调查这个并希望设置时间来解决时区的其他人,请添加:
//Set marketTime for open/close sign to US/Eastern Time in hours
let mktFormatter = NSDateFormatter()
mktFormatter.dateFormat = "HH" //Displays time in 24 hr format
mktFormatter.timeZone = NSTimeZone(name: "US/Eastern")
mktInt = mktFormatter.stringFromDate(date)
let mktTime:Int! = Int(mktInt)!
添加分钟:
//set marketTime2 for open/close sign in minutes
let mktFormatter2 = NSDateFormatter()
mktFormatter2.dateFormat = "mm" //Displays time in minutes
mktFormatter2.timeZone = NSTimeZone(name: "US/Eastern")
mktInt2 = mktFormatter2.stringFromDate(date)
let mktTime2:Int! = Int(mktInt2)!
在这种情况下,我的mktTime =小时(24小时格式),我的mktTime2 =分钟。
然后构建你的if / else语句就像penatheboss上面一样!