目标C:获取两个日期之间的日历天数

问题描述 投票:0回答:1

我只是没有得到正确的结果...所以根据时区,我希望两个日期之间的日历日差。因此,如果一个在第1天的23:00开始并在第2天的14:00结束,它应该返回1。现在我的方法返回0,为什么呢?因为不到24小时?示例:

我的Nslog:

CheckForPictures departure date: Tue Jan 28 23:10:00 2020 destinationDate: Wed Jan 29 09:30:00 2020 in timeZone:Europe/Zurich and get a day difference: 0

((计算机也有苏黎世时区,所以是当地时间)

我的方法:

NSCalendar *calendar = [NSCalendar currentCalendar];
[calendar setTimeZone:timeZone];

NSDateComponents *components = [calendar components:NSCalendarUnitDay
                                                    fromDate:self.departureTime
                                                      toDate:self.destinationTime
                                                     options:0];

NSLog(@"CheckForPictures departure date: %@ destinationDate: %@ in timeZone:%@ and get a day difference: %ld", self.departureTime, self.destinationTime, timeZone.name, components.day);

return components.day;

此代码返回0,并在日志上方记录...

objective-c nsdate nsdatecomponents
1个回答
0
投票

我相信您是在问NSCalendar错误的问题。您想知道到达日期是否与出发日期不同,但是您需要输入到达和离开之间的数。即使时间差只有几分钟,也可能发生日期更改。如果询问已过去多少天,则“几分钟”将舍入为“ 0天”。

您实际上想知道日期是否已更改。我想我会做一些事情,例如获取每个日期的月份并进行比较。由于没有月份有1天的时间,所以我认为这会起作用。

© www.soinside.com 2019 - 2024. All rights reserved.