2017-07-14 40 views
0

以下のコードは、日付選択ツールを作成し、日付と時刻を選択しています。私がしたいのは、日付ピッカーの日付と時刻が、ユーザーの電話の日付と時刻が「クール」という行を印刷することと一致したときだけです。それでおしまい。私は問題を引き起こしているラインをコメントしました。日付datePickerの日付とタイマーのユーザー日付と時刻(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とdateがクラスの内部にあることを知りませんでした。 –

答えて

1

主な問題は、2つの日付の比較方法です。 Dateの両方のインスタンスを同じ形式の文字列に変換するには、同じ日付フォーマッタを使用する必要があります。次に、2つの文字列を比較できます。

@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が必要です。そして1時間はの代わりにHHが必要です。 HHは24時間制、hhは12時間制です。 hhのみを使用する場合は、a(AM/PM)も使用してください。

あなたのプロパティは、クラスの内側でなければなりません。

datePicker2をクラス内に移動します。

dateは私の答えに基づいて廃止されました。完全に削除できるようになりました。

dateFormatterもクラス内で移動する必要があります。

+0

これは、datePickerを現在の時刻に移動すると機能します。しかし、datePickerをある時間に設定し、現在の時刻がdatePickerと一致する場合、何も起こりません。私はアラームを作成しようとしているので、datePickerを設定して、現在の日付と時刻に一致するときに何かを出力させたい。 –

+0

これは完全に別の機能のビットであり、まったく新しい質問が必要です。上記で質問した質問は、ユーザーがピッカーを現在の時刻に変更したときに「クール」を印刷する方法です。その質問に答えました。設定アラームに関するその他の質問があり、現在の日付/時刻が以前にユーザーによって選択された日付/時刻と一致するときは、その問題に関するすべての関連情報を新しい質問とともに投稿する必要があります。 – rmaddy