2013-04-18 2 views
2

Я хочу получить все записи из данных ядра, добавленных между двумя датами. Я использую NSPredicate. Поскольку я не получаю правильный результат, я пробовал записывать дату. Он показывает предыдущие даты. После того, как я искал время, я добавилNSLog, показывающий предыдущую дату

[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; 
} 

Заранее спасибо

ответ

1

При входе в объект NSDate непосредственно он всегда будет отображать фолиант в GMT/UTC часовой пояс. вы должны регистрировать вывод форматирования даты.

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

Это займет ваш часовой пояс на счете. Или лучше: часовой пояс календаря dateformatter - что такое устройство по умолчанию, если вы его не меняете.

+0

Да, они показывают правильные даты now.then почему я получаю неправильные результаты? – Sekhar

+0

вы не ошибаетесь: внутренние даты всегда сохраняются в часовом поясе UTC. вот и все. но календарь знает, что в какой час в UTC время начинается в вашем часовом поясе, и тафф нравится. Фактически дата - это всего лишь момент времени, за исключением секунд. только внутри календаря он становится значимым, поскольку календарь определяет, что такое день, месяц, год, час минута. – vikingosegundo

+0

Не устанавливайте часовой пояс. оставьте его на устройстве. – vikingosegundo

Смежные вопросы