根据时间显示/隐藏标签

时间:2016-06-16 22:32:05

标签: xcode swift macos

我希望根据一天中的时间显示和隐藏标签。我在商店使用它作为一种开放式标志。在周一至周五的上午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
    }

2 个答案:

答案 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信用:

https://stackoverflow.com/a/27547225/5143847

答案 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上面一样!