【问题标题】:How can I compare the value of my two date strings?如何比较两个日期字符串的值?
【发布时间】:2017-04-04 15:13:34
【问题描述】:

如何将数据库中的值与当前日期进行比较?执行某些操作时会在数据库中保存一个日期,我需要将该日期与我当前的日期进行比较并执行一些操作。我怎样才能做到这一点 ?

日期以这种格式保存在我的日期库中:

    var tasksin2 : Task?

    dateFormatter.dateFormat = "dd/MM/yyyy  hh:mm"

    let mydate="\(dateFormatter.string(from: datePicker.date))"

    tasksin2?.time=mydate

    (UIApplication.shared.delegate as! AppDelegate).saveContext()

【问题讨论】:

  • 反过来做:从tasksin2?.time创建一个Date。但是,您给定的代码 tasksin2?.timenil.
  • @vadian 是的,我可以通过将保存的日期从数据库打印到标签来做到这一点,但是如何将其与当前时间进行比较?
  • 再一次,要精确比较日期,您需要 Date 实例。比较日期字符串表示很麻烦。
  • 正如@vadian 所说,比较两个Date 实例更容易且更精确。检查此链接stackoverflow.com/a/29319732/5997339

标签: ios swift date time


【解决方案1】:

来吧:

extension String {
    func toDate() -> Date? {
        let formatter = DateFormatter()
        formatter.dateFormat = "dd/MM/yyyy  hh:mm"
        return formatter.date(from: self)
    }
}

class MyViewController: UIViewController {

    var dateString1: String!
    var dateString2: String!

    override func viewDidLoad() {
        super.viewDidLoad()
        // set dateStrings
        printDateTypes()
    }

    func printDateTypes() {

        guard let date1 = dateString1.toDate() else { 
            print("dateString1: \(dateString1) | Failed to cast to \"dd/MM/yyyy  hh:mm\"")
            return 
        }

        guard let date2 = dateString2.toDate() else { 
            print("dateString2: \(dateString2) | Failed to cast to \"dd/MM/yyyy  hh:mm\"")
            return 
        }


        let isDescending = date1.compare(date2) == ComparisonResult.orderedDescending
        print("orderedDescending: \(isDescending)")

        let isAscending = date1.compare(date2) == ComparisonResult.orderedAscending
        print("orderedAscending: \(isAscending)")

        let isSame = date1.compare(date2) == ComparisonResult.orderedSame
        print("orderedSame: \(isSame)")
    }
}

【讨论】:

  • 为什么if/elsetoDate 函数中?只需return formatter.date(from: self)
  • 因为当我第一次编写它时,我是一个经验不足的开发人员。接得好! rmaddy...开始感觉你在跟踪我>。
  • 我在数据库中的日期看起来像03/04/2017 10:54,而我现在的日期看起来像5/4/2017 11:41 这些可以比较吗?
  • 其中一个使用“dd/MM/yyyy hh:mm”,另一个使用“d/MM/yyyy hh:mm”...如果您需要一个很好的 DateFormatter 参考资料,使用this
猜你喜欢
  • 1970-01-01
  • 2013-10-31
  • 1970-01-01
  • 1970-01-01
  • 2014-11-15
  • 2019-07-25
  • 2013-06-24
  • 2014-04-21
  • 2013-01-24
相关资源
最近更新 更多