【问题标题】:A comparison of two dates to update the database in Swift 4比较两个日期以在 Swift 4 中更新数据库
【发布时间】:2018-11-15 22:26:52
【问题描述】:

我有这个代码:

func getSystemDate()-> String{
        let date = Date()
        let calendar = Calendar.current
        let hour = String(format: "%02d",calendar.component(.hour, from: date))
        let minutes = String(format: "%02d",calendar.component(.minute, from: date))
        let seconds = String(format: "%02d",calendar.component(.second, from: date))

        let day = String(format: "%02d",calendar.component(.day, from: date))
        let month = String(format: "%02d",calendar.component(.month, from: date))
        let year = String(format: "%02d",calendar.component(.year, from: date))

        let fullDate = "\(year)-\(month)-\(day) \(hour):\(minutes):\(seconds)"

        return fullDate
    }
let date1 = getSystemDate()
let date2 = "2018-05-23 13:14:47"

if date1 > date2 {
    print("its ok - update available")
} else {
    print("wrong - you have actually database")
}

我的函数getSystemDate() 以字符串形式返回实际日期。 在变量date2 - 我有数据库更新日期。

我需要确定是否可以更新数据库并将当前日期与可用数据库的日期进行比较:...

如何比较这些日期?

【问题讨论】:

    标签: ios swift date swift3 swift4


    【解决方案1】:

    您可以使用Calendar 比较两个Dates。你也可以去second unit,如果差值为0表示它们相等,否则你可以检查哪个更大:

    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
    //dateFormatter.timeZone   = TimeZone(abbreviation: "UTC")  // To add timezone
    
    guard let dateOne = dateFormatter.date(from: "2018-05-23 13:14:47"), let dateTwo = dateFormatter.date(from: "2018-05-23 14:14:47") else {
        print("One of the date conversion is nil")
        return
    }
    
    print(dateOne, dateTwo)
    
    let components = Calendar.current.dateComponents([.second], from: dateOne, to: dateTwo)
    let secondsInBetween: Int = components.second!
    
    print(secondsInBetween)
    

    【讨论】:

    • 好的,谢谢。如何将我的日期(我在系统中的字符串中)转换为日期格式(以使用您的代码)?
    • 是的。我的函数 getSystemDate 和数据库中有 - 格式为字符串的日期。您能告诉我如何将字符串格式的 2 个日期与您的代码进行比较吗?
    • @triff 更新了我的答案。
    • 它不能正常工作:image.ibb.co/bEwOho/Zrzut_ekranu_2018_06_06_o_12_06_26.png - 输入和输出日期不同
    • @triff 我也添加了 timeZone 行,如果您添加输入和输出日期没有差异,但这对您的操作无关紧要,因为两个日期都提供 UTC 输出。你想要的是如果 dateOne > dateTwo、dateOne
    猜你喜欢
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    相关资源
    最近更新 更多