gpt4 book ai didi

ios - 如何检查两个 NSDate 之间的时间量?

转载 作者:行者123 更新时间:2023-11-30 12:33:54 26 4
gpt4 key购买 nike

我正在制作一种基于挑战的应用程序,要求用户每天回来。如果有一天他错过了,他就必须重新开始。我的问题是我的 dateChanged() 函数;第一件事是,它的工作不太可靠,第二件事是我只是检查日期是否更改,因此我不知道使用该应用程序之间是否有一两天。这是我当前的功能:

public func changeDays()
{
myFormatter.dateStyle = .short
myFormatter.locale = Locale(identifier: "de_DE")

oldDate = defaults.string(forKey: "oldDate")!
let newDate = Date()
let newDateString = myFormatter.string(from: newDate)

if newDateString == oldDate
{
NumberOfDaysInARow.text = "\(days) / 30"
}
else if newDateString != oldDate
{
days += 1
NumberOfDaysInARow.text = "\(days) / 30"
defaults.set(days, forKey: "days")
}

oldDate = newDateString
defaults.set(oldDate, forKey: "oldDate")


}

就在今天,当我在 iPhone 上启动应用程序时,它开始出现 fatal error ,但在模拟器中却没有发生......很奇怪。我必须如何更改我的函数以使其 100% 可靠(并且正常工作),同时还能够检查两个日期之间的时间量?

感谢您的浏览!祝你有美好的一天

最佳答案

您可以使用下面的函数扩展 Date,该函数返回距另一个日期的天数。

extension Date {

// Returns the amount of days from another date
func days(from date: Date) -> Int {
return Calendar.current.dateComponents([.day], from: date, to: self).day ?? 0
}
}

您可以将其设置为默认日期,而不是将 oldDate 保存为字符串:

defaults.set(Date(), forKey: "oldDate")

您可以使用以下方式从默认值获取旧日期:

let oldDate = defaults.object(forKey:"oldDate") as! Date

一旦你有了旧约会

let dateNow = Date()

let timeDifference = dateNow.days(from: oldDate!)

If timeDifference > 1 {
// older than 1 day
} else {
// Streak still alive
}
}

关于ios - 如何检查两个 NSDate 之间的时间量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43126753/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com