gpt4 book ai didi

swift - NSDate:获取明天或昨天的值

转载 作者:行者123 更新时间:2023-11-30 13:25:15 24 4
gpt4 key购买 nike

我有一段代码,基本上分为两部分:

第 1 部分:用户使用 UIDatePicker 设置日期。例如,用户选择当前日期提前 1 天。因此选择的新日期是 5/19/16,而不是 5/18/16。

第 1 部分代码

let dateFormatter = NSDateFormatter()
dateFormatter.locale = NSLocale.currentLocale()
var dateString = "May-19-2016"
dateFormatter.dateFormat = "MMMM-dd-yyyy"

var due_date = dateFormatter.dateFromString(dateString)!

第 2 部分:我创建了计算从所选日期到当前日期还剩多少天的代码。在这个例子中,我的代码不知何故说它是明天之前的 0 天。这是第二部分的代码:

第二部分:

func computeDates(dueDate:NSDate)-> Int {

let currentDate = NSDate()

// Adding days to currentDate
let daysToAdd = 1

// Adding on Unit to the current instance
let calculateDate = NSCalendar.currentCalendar().dateByAddingUnit(NSCalendarUnit.Day, value: daysToAdd, toDate: currentDate, options: NSCalendarOptions.init(rawValue: 0))

// Figure out many days from may 3rd
let cal = NSCalendar.currentCalendar()

let unit = NSCalendarUnit.Day

let components = cal.components(unit, fromDate: currentDate, toDate: dueDate, options: [])

let countLeft = components.day

return countLeft
}

print("Days left: \(computeDates(due_date)) ")


// Tests
let calc_date = computeDates(due_date)

if calc_date <= -1 {
print("Yesterday")
} else if calc_date == 0 {
print("Today")
} else if calc_date > 1 {
print("Tomorrow")
}

在第 1 部分示例中,我使用了静态日期来测试此代码。在这一部分中,我将 2016 年 5 月 19 日设定为提前一天。在 if 语句下面的第二部分中,它以某种方式说我还剩下 0 天,从我想做的事情来看,它应该说明天 19 号之前还剩下 1 天。

另一个例子,如果我将 19 号更改为 20 号,我希望它从现在开始显示“2 天后”

现在,如果我将这一天恢复到 5 月 15 日(过去),那么 if 语句会显示诸如 Overdue 或过去之类的内容。

我该如何解决这个问题?

最佳答案

如果您将 NSDate 视为一个以 2001 年以来的秒数进行操作的结构,将会有所帮助。这意味着如果您选择一个“日期”,它包含“日期和时间”。要计算特定“日期”之间的正确天数,您所需要做的就是截断时间部分。

但是,如果您只需要检查提供的日期是昨天、今天还是明天,NSCalendar 有用于此目的的方法:

目标-C:

- (BOOL)isDateInToday:(NSDate *)date NS_AVAILABLE(10_9, 8_0);
- (BOOL)isDateInYesterday:(NSDate *)date NS_AVAILABLE(10_9, 8_0);
- (BOOL)isDateInTomorrow:(NSDate *)date NS_AVAILABLE(10_9, 8_0);

还有 swift :

@available(OSX 10.9, *)
public func isDateInYesterday(date: NSDate) -> Bool

@available(OSX 10.9, *)
public func isDateInTomorrow(date: NSDate) -> Bool

@available(OSX 10.9, *)
public func isDateInWeekend(date: NSDate) -> Bool

关于swift - NSDate:获取明天或昨天的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37293023/

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