2017-07-14 152 views
0

我的代碼如下創建一個日期選擇器,並選擇一個日期和時間。我想要做的就是當日期選擇器的日期和時間匹配用戶手機的日期和時間時,打印「酷」的線。而已。我評論了導致我出現問題的線路。匹配日期Picker日期和計時器與用戶日期和時間(swift3)

import UIKit 

var dateFormatter : DateFormatter! 

let datePicker2 = UIDatePicker(); 
let date = Date() 

class ViewController: UIViewController { 

    @IBOutlet var dateLabel: UILabel! 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     let datePicker : UIDatePicker = UIDatePicker(frame: CGRect(x: 0,y: 330,width: self.view.frame.size.width,height: 220)) 
     datePicker.datePickerMode = UIDatePickerMode.dateAndTime 
     self.view.addSubview(datePicker) 

     datePicker.addTarget(self, action: #selector(ViewController.change(_:)), for: UIControlEvents.valueChanged) 

     dateFormatter = DateFormatter() 
     dateFormatter.dateFormat = "YYYY-MM-dd hh:mm" 
    } 

    @IBAction func change(_ sender : UIDatePicker) 
    { 
     dateLabel.text = dateFormatter.string(from: sender.date) 
     ///print cool line; what I have does not work 
     if dateLabel.text == String(describing: date){ 
      print("cool") 

     } 
    } 
} 
+0

爲什麼'datePicker2'和'date'是在類之外而不是在類之內聲明的? – rmaddy

+0

而你的日期格式應該是'「yyyy-MM-dd HH:mm」'。 – rmaddy

+0

@rmaddy不知道datePicker2和日期應該在課堂內。 –

回答

1

您的主要問題是您如何比較兩個日期。您應該使用相同的日期格式化程序將Date實例轉換爲相同格式的字符串。然後你可以比較兩個字符串。

@IBAction func change(_ sender : UIDatePicker) 
{ 
    let pickerString = dateFormatter.string(from: sender.date) 
    let nowString = dateFormatter.string(from: Date()) 

    dateLabel.text = pickerString 
    if pickerString == nowString { 
     print("cool") 
    } 
} 

您也正在使用錯誤的格式。你需要"yyyy-MM-dd HH:mm"YYYY略有不同。除非您有明確的理解和具體需要使用YYYY,否則您總是需要yyyy。而你想要的時間是HH而不是hhHH是一個24小時的小時,而hh是一個12小時的小時。只有使用hh,你也可以使用a(AM/PM)。

而你的屬性應該在課堂內部,而不是外部。

在班級裏面移動datePicker2

date現在基於我的回答已過時,因此您可以將其完全刪除。

dateFormatter也應該在課堂內移動。

+0

如果將datePicker移動到當前時間,此功能將起作用。但是,如果您將datePicker設置爲某個時間,並且當前時間與datePicker匹配,則什麼都不會發生。我試圖發出警報,所以我想設置datePicker並在匹配當前日期和時間時打印它。 –

+0

這是一個完全獨立的功能,需要一個全新的問題。您上面提到的問題是,當用戶將選擇器更改爲當前時間時,如何打印「很酷」。這個問題已經得到解答。如果您有關於設置鬧鐘的其他問題,並且知道當前日期/時間與用戶以前選擇的日期/時間相匹配,則應該發佈一個包含該問題的所有相關詳細信息的新問題。 – rmaddy