Ios 显示上一日期的NSLog

Ios 显示上一日期的NSLog,ios,objective-c,core-data,nsdate,Ios,Objective C,Core Data,Nsdate,我想从两个日期之间添加的核心数据中检索所有条目。我正在使用NSPredicate。由于我没有得到正确的结果,我尝试记录日期。它显示了以前的日期。在谷歌搜索了一段时间后,我添加了 [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]到我的代码。现在,它显示正确的日期,但结果仍然是错误的 这是我使用的代码 NSDate *fromDate = [[self dateFormatter]dateFromString:s

我想从两个日期之间添加的核心数据中检索所有条目。我正在使用
NSPredicate
。由于我没有得到正确的结果,我尝试记录日期。它显示了以前的日期。在谷歌搜索了一段时间后,我添加了

[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]到我的代码。现在,它显示正确的日期,但结果仍然是错误的

这是我使用的代码

NSDate *fromDate = [[self dateFormatter]dateFromString:self.fromDateField.text];
NSLog(@"%@",fromDate);
NSDate *toDate = [[self dateFormatter]dateFromString:self.toDateField.text];
NSLog(@"%@",toDate);
NSComparisonResult result = [fromDate compare:toDate];
switch (result) {
    case NSOrderedAscending:
    {
        //code
    }

- (NSDateFormatter *)dateFormatter
{
static NSDateFormatter *dateFormatter = nil;
if (dateFormatter == nil) 
{
    dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateStyle:NSDateFormatterMediumStyle];
    [dateFormatter setTimeStyle:NSDateFormatterNoStyle];
    [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
}
   return dateFormatter;
}

提前感谢

如果您直接记录NSDate对象,它将始终以GMT/UTC时区显示tome。您必须记录日期格式化程序的输出

NSLog(@"%@",[self.dateFormatter stringFromDate:toDate]);

这将考虑到你的时区。或者更好:dateformatter日历的时区-如果不更改,设备默认值是多少。

是的,它们现在显示的是正确的日期。那么为什么我会得到错误的结果?您没有得到错误的结果:内部日期始终保存在UTC时区中。仅此而已。但日历知道,即在UTC时间的哪一小时,您时区中的一天开始,并像那样凝灰岩。事实上,约会只是时间上的一瞬间,而不是几秒钟的流逝。只有在日历中它才有意义,因为日历定义了一天、一个月、一年、一小时、一分钟,所以不要设置时区。将其留给设备。我删除了时区,但仍然得到错误的结果。我希望在我给出的两个日期(从14日到18日)之间添加所有数据。我得到所有数据,但18日添加的数据除外。请帮助。可能你的结果是正确的,你只是解释错了。或者你在创作过程中弄错了日期。