Swift 4:验证信用卡到期日期

Dan*_*ode 0 date swift

我正在编写代码来检查信用卡是否已过期。

这是我所拥有的

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM/yyyy"
let enteredDate = dateFormatter.date(from: expiryDate.text!) /* line 3 - set to first day of month */
let now = Date()
if (enteredDate! < now) {
    //expired
    // does not work if current month and year 
    // is the same as the expiration date, 
    // because expiration day is set to the first day of the month on line 3
} else {
    // valid
    print("valid - now: \(now) entered: \(enteredDate)")
}
Run Code Online (Sandbox Code Playgroud)

关于如何将初始化日期更改为该月的最后一天而不是第一天有什么想法吗?

rma*_*ddy 6

enteredDate将于到期日当月第一天的当地时间午夜。由于您希望整个月都有效,因此请在该值上添加 1 个月,然后Date()与更新后的值进行比较。

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM/yyyy"
let enteredDate = dateFormatter.date(from: expiryDate.text!)!
let endOfMonth = Calendar.current.date(byAdding: .month, value: 1, to: enteredDate)!
let now = Date()
if (endOfMonth < now) {
    print("Expired - \(enteredDate) - \(endOfMonth)")
} else {
    // valid
    print("valid - now: \(now) entered: \(enteredDate)")
}
Run Code Online (Sandbox Code Playgroud)

请注意,我将正确处理选项作为练习留给读者。