mencocokkan tanggal dan pengatur waktu datePicker dengan Tanggal dan Waktu pengguna (swift3)

Kode saya di bawah ini membuat pemilih tanggal dan memilih tanggal dan waktu. Yang ingin saya lakukan adalah ketika tanggal dan waktu pemilih tanggal cocok dengan tanggal dan waktu ponsel pengguna adalah mencetak baris "keren". Itu dia. Saya mengomentari baris yang menyebabkan masalah bagi saya.

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")

        }
    }
}

person Community    schedule 14.07.2017    source sumber
comment
Mengapa datePicker2 dan date dideklarasikan di luar kelas, bukan di dalam kelas?   -  person rmaddy    schedule 14.07.2017
comment
Dan format tanggal Anda harus "yyyy-MM-dd HH:mm".   -  person rmaddy    schedule 14.07.2017
comment
@rmaddy tidak tahu bahwa datePicker2 dan date harus ada di dalam kelas.   -  person    schedule 14.07.2017


Jawaban (1)


Masalah utama Anda adalah bagaimana Anda membandingkan kedua tanggal tersebut. Anda harus menggunakan pemformat tanggal yang sama untuk mengonversi kedua instance Date menjadi string dalam format yang sama. Kemudian Anda dapat membandingkan kedua string tersebut.

@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")
    }
}

Anda juga menggunakan format yang salah. Anda membutuhkan "yyyy-MM-dd HH:mm". YYYY sedikit berbeda. Anda selalu menginginkan yyyy kecuali Anda memiliki pemahaman yang jelas dan kebutuhan spesifik untuk menggunakan YYYY. Dan untuk jam yang Anda inginkan HH bukannya hh. HH adalah jam 24 jam sedangkan hh adalah jam 12 jam. Hanya gunakan hh saja Anda juga menggunakan a (untuk AM/PM).

Dan properti Anda harus berada di dalam kelas, bukan di luar.

Pindahkan datePicker2 ke dalam kelas.

date sekarang sudah usang berdasarkan jawaban saya sehingga Anda dapat menghapusnya sepenuhnya.

dateFormatter juga harus dipindahkan ke dalam kelas.

person rmaddy    schedule 14.07.2017
comment
ini berfungsi jika Anda memindahkan datePicker ke waktu saat ini. Tetapi jika Anda menyetel datePicker ke suatu waktu dan kemudian ketika waktu saat ini cocok dengan datePicker, tidak ada yang terjadi. Saya mencoba membuat alarm jadi saya ingin mengatur datePicker dan mencetak sesuatu yang cocok dengan tanggal dan waktu saat ini. - person ; 14.07.2017
comment
Itu adalah fungsi yang benar-benar terpisah dan memerlukan pertanyaan yang benar-benar baru. Pertanyaan yang Anda ajukan di atas adalah bagaimana cara mencetak keren ketika pengguna mengubah pemilih ke waktu saat ini. Pertanyaan itu telah terjawab. Jika Anda memiliki pertanyaan lain tentang pengaturan alarm dan mengetahui kapan tanggal/waktu saat ini cocok dengan tanggal/waktu yang dipilih sebelumnya oleh pengguna, Anda harus memposting pertanyaan baru dengan semua detail yang relevan tentang masalah tersebut. - person rmaddy; 14.07.2017