Я хочу получить все записи из данных ядра, добавленных между двумя датами. Я использую 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;
}
Заранее спасибо
Да, они показывают правильные даты now.then почему я получаю неправильные результаты? – Sekhar
вы не ошибаетесь: внутренние даты всегда сохраняются в часовом поясе UTC. вот и все. но календарь знает, что в какой час в UTC время начинается в вашем часовом поясе, и тафф нравится. Фактически дата - это всего лишь момент времени, за исключением секунд. только внутри календаря он становится значимым, поскольку календарь определяет, что такое день, месяц, год, час минута. – vikingosegundo
Не устанавливайте часовой пояс. оставьте его на устройстве. – vikingosegundo