如何检查每3天下载一些数据?我需要做的就是检查用户打开应用程序是否已经过了3天或更长时间,如果是这样,应用程序是否可以下载一些内容?以下是我迄今为止比较日期的内容:
var shouldDownload: Bool = false
extension NSDate: Equatable {}
extension NSDate: Comparable {}
public func ==(lhs: NSDate, rhs: NSDate) -> Bool {
return lhs.timeIntervalSince1970 == rhs.timeIntervalSince1970
}
public func <(lhs: NSDate, rhs: NSDate) -> Bool {
return lhs.timeIntervalSince1970 < rhs.timeIntervalSince1970
}
extension Int {
var days: NSTimeInterval {
let DAY_IN_SECONDS = 60 * 60 * 24
var days:Double = Double(DAY_IN_SECONDS) * Double(self)
return days
}
let lastChecked = NSDate()
let interval = NSDate(timeInterval: 3.days, sinceDate: lastChecked)
let today = NSDate()
if interval > today {
shouldDownload = true
}
答案 0 :(得分:4)
您可以使用这个简单的功能:
func isPassedMoreThan(days: Int, fromDate date : Date, toDate date2 : Date) -> Bool {
let unitFlags: Set<Calendar.Component> = [.day]
let deltaD = Calendar.current.dateComponents( unitFlags, from: date, to: date2).day
return (deltaD ?? 0 > days)
}
答案 1 :(得分:2)
这是我怎么做的。每次您的应用启动或返回到前台时,请执行以下操作:
从NSUserDefaults中读取已保存的NSDate。
计算已保存的中午数 直到现在。 (在&#34; Midnights&#34;的Xcode文档中进行搜索以查找 NSCalendar代码,用于计算两个日期之间的天数。)
将今天的日期保存到NSUserDefaults作为新保存的日期
我将此方法编写为NSDate的扩展名:
/**
This function calcuates an ordinal day number for the receiver
using the Gregorian calendar.
:returns: an integer day number
*/
func dayNumber() -> Int
{
let calendar = DateUtils.gregorianCalendar
return calendar.ordinalityOfUnit(NSCalendarUnit.CalendarUnitDay,
inUnit: NSCalendarUnit.CalendarUnitEra, forDate: self)
}
它使用DateUtils类来管理Gregorian NSCalendar的单个实例。这让我可以避免为我需要做的每个日期操作创建一个新的Gregorian日历实例。
class DateUtils
{
static let gregorianCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
}
答案 2 :(得分:0)
Swift 4版本:
ng generate component