Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 检查两个NSDate值之间的间隔天数(仅使用00.00而不是确切的currentTime)_Swift_Nsdate - Fatal编程技术网

Swift 检查两个NSDate值之间的间隔天数(仅使用00.00而不是确切的currentTime)

Swift 检查两个NSDate值之间的间隔天数(仅使用00.00而不是确切的currentTime),swift,nsdate,Swift,Nsdate,所以我正在制作一个应用程序,计算你每天吃多少卡路里/蛋白质等,然后你可以在一周后比较你平均每天吃多少。 一切都很完美,只是从您开始会话的确切时间到您检查总体统计数据的确切时间都很重要。在这里,我将展示一些用于此函数的代码: 以下是在第一个视图中保存开始日期的代码: let currentDate = NSDate() let defaults5 = NSUserDefaults.standardUserDefaults() defaults5.setObject(currentDate, fo

所以我正在制作一个应用程序,计算你每天吃多少卡路里/蛋白质等,然后你可以在一周后比较你平均每天吃多少。 一切都很完美,只是从您开始会话的确切时间到您检查总体统计数据的确切时间都很重要。在这里,我将展示一些用于此函数的代码:

以下是在第一个视图中保存开始日期的代码:

let currentDate = NSDate()

let defaults5 = NSUserDefaults.standardUserDefaults()
defaults5.setObject(currentDate, forKey: "startDay")
下面是检查结束日期并比较日期以查看已过去多少天的代码(这在另一个视图中):

因此,在本例中,DayLabel将显示开始日期和currentDate(+1)之间的天数,但我希望忽略小时数。例如,如果我在周二16:00开始会话,并且在周三检查15:00,它仍将计为0天,因为它只过了23小时,我希望它每次都在00:00开始startDay。

试试这个:

n、 b.只需对一些示例日期使用
dateFormatter

let start = "2016-01-20 18"
let end = "2016-01-21 17"

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH"

var startDate:NSDate = dateFormatter.dateFromString(start)!
var endDate:NSDate = dateFormatter.dateFromString(end)!

let cal = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!

startDate = cal.startOfDayForDate(startDate)
endDate = cal.startOfDayForDate(endDate)

let totalDays = cal.components(.Day, fromDate: startDate, toDate: endDate, options: []).day

print(totalDays)

在这里,我们将两天的时间都设置为12:00,这样时间就不重要了,就在这两天之间。

可能重复的hmm我看不出你在哪里设置的时间看起来很像我的代码我缺少什么:p?
startDate
endDate
分别相当于你的
startDay
currentDay
,仅使用示例日期(与您的示例类似-不同日期相隔23小时)但以你为例,它就像我的一样,如果你开始2016-20-18课程,然后检查2016-21-17总结,那么它将显示0天的差异,我希望它总是以2016-20-00.00为例计算开始日期,即使你开始2016-20-18.00课程,我不知道这是否是你正在做的,我只是不理解或者你不理解d我的(错误)解释:如果您运行上述代码(尝试游乐场),它将为
总天数打印1
:)
let start = "2016-01-20 18"
let end = "2016-01-21 17"

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH"

var startDate:NSDate = dateFormatter.dateFromString(start)!
var endDate:NSDate = dateFormatter.dateFromString(end)!

let cal = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!

startDate = cal.startOfDayForDate(startDate)
endDate = cal.startOfDayForDate(endDate)

let totalDays = cal.components(.Day, fromDate: startDate, toDate: endDate, options: []).day

print(totalDays)