NSLog显示前一个日期 [英] NSLog showing the previous Date
问题描述
我想从两个日期之间添加的核心数据中检索所有条目。我使用 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;先感谢提前 h2_lin>解决方案如果你直接记录一个NSDate对象,它总是显示在GMT / UTC时区的tome。
NSLog(@%@,[self.dateFormatter stringFromDate:toDate ]);
这将占用您的时区帐户。或更好:日期格式的日历的时区 - 如果您不更改设备默认值。
I want to retrieve all the entries from core data added between two dates.I am using NSPredicate
. As I am not getting the correct result I tried logging the date.It is showing the previous dates.After googling for a while I added
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
to my code.Now,Its showing correct dates but the results are still wrong.
This is the code I used.
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;
}
Thanks in advance
解决方案 If you log an NSDate object directly it will always display the tome in GMT/UTC timezone. you have to log the output of a date formatter.
NSLog(@"%@",[self.dateFormatter stringFromDate:toDate]);
This will take your timezone in account. Or better: the timezone of the dateformatter's calendar — what is the device default if you dont change that.
这篇关于NSLog显示前一个日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!