首页 > 解决方案 > 使用 to 和 from 日期过滤数组

问题描述

我正在使用 FMDB 数据库来保存我的记录,在我的数据库中我有这些东西的名称、编号、日期、标题等。

我想按日期获取记录,就像从 2 月 2 日到 2 月 4 日的所有记录一样,这是我正在尝试执行的代码,但是当我比较日期时,我也得到时间,所以比较失败

是否可以在没有时间的情况下将字符串转换为日期?

输出:- :2019-12-01 19:00:00 +0000

我想转换成格式 2019-12-01 (yyyy-dd-mm)

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()
    }

标签: swiftdatabasedate-comparison

解决方案


您正在使用 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)

推荐阅读