当前位置: 首页 > 面试题库 >

使用Swift进行NSDate比较

胥承
2023-03-14
问题内容

我正在开发需要检查作业截止日期的应用程序。我想知道到期日期是否在下个星期之内,然后再执行一项操作。
我可以找到的大多数文档都在Objective-C中,但我不知道如何在Swift中完成。谢谢您的帮助!!


问题答案:

我喜欢使用扩展使代码更具可读性。以下是一些NSDate扩展,它们可以帮助清理代码并使其易于理解。我把它放在一个sharedCode.swift文件中:

extension NSDate {

    func isGreaterThanDate(dateToCompare: NSDate) -> Bool {
        //Declare Variables
        var isGreater = false

        //Compare Values
        if self.compare(dateToCompare as Date) == ComparisonResult.orderedDescending {
            isGreater = true
        }

        //Return Result
        return isGreater
    }

    func isLessThanDate(dateToCompare: NSDate) -> Bool {
        //Declare Variables
        var isLess = false

        //Compare Values
        if self.compare(dateToCompare as Date) == ComparisonResult.orderedAscending {
            isLess = true
        }

        //Return Result
        return isLess
    }

    func equalToDate(dateToCompare: NSDate) -> Bool {
        //Declare Variables
        var isEqualTo = false

        //Compare Values
        if self.compare(dateToCompare as Date) == ComparisonResult.orderedSame {
            isEqualTo = true
        }

        //Return Result
        return isEqualTo
    }

    func addDays(daysToAdd: Int) -> NSDate {
        let secondsInDays: TimeInterval = Double(daysToAdd) * 60 * 60 * 24
        let dateWithDaysAdded: NSDate = self.addingTimeInterval(secondsInDays)

        //Return Result
        return dateWithDaysAdded
    }

    func addHours(hoursToAdd: Int) -> NSDate {
        let secondsInHours: TimeInterval = Double(hoursToAdd) * 60 * 60
        let dateWithHoursAdded: NSDate = self.addingTimeInterval(secondsInHours)

        //Return Result
        return dateWithHoursAdded
    }
}

现在,如果您可以执行以下操作:

//Get Current Date/Time
var currentDateTime = NSDate()

//Get Reminder Date (which is Due date minus 7 days lets say)
var reminderDate = dueDate.addDays(-7)

//Check if reminderDate is Greater than Right now
if(reminderDate.isGreaterThanDate(currentDateTime)) {
    //Do Something...
}


 类似资料:
  • 问题内容: 如何将以下Objective-C代码转换为Swift代码? 我正在格式化。 问题答案:

  • Swift-NSDate-Extensions 是 Swift NSDate 扩展,帮助开发。

  • 问题内容: 我正在迅速这样做: 日志给了我这个: 然后,我尝试获取间隔以进行测试: 我得到: tI = 0.0 我究竟做错了什么?我似乎可以使timeIntervalSince1970调用正常工作。在Swift中是否有与此相关的已知问题,或者我在这里缺少什么? 问题答案: 最有可能是以 毫秒为单位 的时间间隔: Swift 3及更高版本:

  • 我明白为什么第三个和第四个输出打印真和假。这是因为返回一个对象,包装类缓存值在-128到127范围内的对象。如果向传递了该范围内的任何值,则它应该重用缓存中的对象。否则,它将创建一个新对象。 现在,为什么第二个输出打印出false?我以为返回一个原语,而不是像那样返回一个对象。

  • 问题内容: 我有一个采用以下格式的包含: 星期四,2014年9月4日10:50:12 +0000 您知道如何将其转换为: 04-09-2014 ( dd-MM-yyyy ) 当然,使用 Swift 问题答案: 如果上述方法不起作用,则应采取以下措施:

  • 问题内容: 当我尝试向服务器上的API发送POST请求时遇到问题,我遵循了许多不同的教程,但仍然无法正常工作。我知道我的问题出在POST请求上,但我解决不了!所以这是我在Swift中的代码以及我在php中的API :(是的,我已经用代码中的真实ID替换了xxxx) 总结一下,服务器接收到请求,例如,如果我手动输入一个伪指令,它就可以工作,实际上是POST方法不起作用。。服务器未接收到POST参数