将所选时间与当前时间进行比较

时间:2017-03-05 02:32:31

标签: swift time timer

我有一个用于选择时间(不是日期)的UIdatepicker。一旦选择了时间,我需要检查它是否存储在手机时钟中的当前时间,如果不存在则再检查,直到它执行此代码:

takephoto = true

示例:我在上午10:29打开应用程序,我选择10:31作为时间,在10:31执行take-hot = true

我看了this个问题,但它比较的是日期而不是时间。非常感谢任何帮助。

我也尝试过使用此代码但它无法正常运行。我需要计时器准确(在实际时间的一秒内),此代码仅在一分钟内(实际时间内)起作用:

var timercount = Timer()

viewdidload()
{
 timercount = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(Check), userInfo: nil, repeats: true)
}


 Func Check()
{

 let nowdate = NSDate()(two date declare global Var)
 let date2 = datePicker?.date 
(chek the Time How Much Time Remain)
 let elapsed = date2?.timeIntervalSince(nowdate as Date)

 if Int(elapsed!) == 0
      {

        takePhoto = true
      }

}

1 个答案:

答案 0 :(得分:3)

通过NSDate让你复杂化。使用Swift的原生Date

func check() {
    let fireDate = datePicker.date

    if fireDate < Date() {
        takePhoto = true
    }
}

另外,你应该避免这种情况:

if Int(elapsed!) == 0 { } // don't

原因是计时器可能错过一个节拍(由于用户退出应用程序,系统太忙,舍入错误等),使得该条件未满足。始终检查现在是否超过fireDate,如果是,请拍摄照片。如果您只想拍摄一次照片,请添加另一个属性来表示,如下所示:

if fireDate < Date() && !photoTaken {
    takePhoto = true
    photoTaken = true
}