Фильтровать массив, используя дату и дату - PullRequest
0 голосов
/ 14 февраля 2019

Я использую базу данных FMDB для сохранения своих записей, в моей базе данных есть такие вещи, как имя, номер, дата, заголовок и т. Д.

Я хочу получать записи по дате, как и все записи со 2-го февраля по4 февраля, это мой код, я пытаюсь это сделать, но когда я сравниваю дату, я также получаю время, поэтому сравнение не удается

Возможно ли преобразовать строку в дату без времени?

вывод: -: 2019-12-01 19:00:00 + 0000

Я хотел бы преобразовать в формат 2019-12-01 (гггг-дд-мм)

let start = lblTo.text ?? ""
let end = lblFrom.text ?? ""
let dateFormat = "dd-MM-yyyy"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = dateFormat
dateFormatter.timeStyle = .short
dateFormatter.dateStyle = .short
dateFormatter.timeZone = TimeZone.current

let startDate = dateFormatter.date(from: start)
let endDate = dateFormatter.date(from: end)

Я пытаюсь отфильтровать запись из базы данных

 for data in readingDataSouce{
            let readingDate = stringToDate(date:data.date ?? "")


            if readingDate > startDate! && readingDate < endDate!
                {

                }


        }


    func stringToDate(date:String) -> Date{
        let start = date
        let dateFormat = "dd-MM-yyyy"
        let dateFormatter = DateFormatter()
         dateFormatter.timeZone = TimeZone.current
        dateFormatter.dateFormat = dateFormat
        let startDate = dateFormatter.date(from: start)
        return startDate ?? Date()
    }

1 Ответ

0 голосов
/ 14 февраля 2019

Вы используете timeStyle = .short, измените его на .none

let end = lblFrom.text ?? ""
let dateFormat = "yyyy-dd-MM"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = dateFormat
dateFormatter.timeStyle = .none
dateFormatter.dateStyle = .short
let correctDate = dateFormatter.string(from: end)
...