Сохранение NSDate с системным часовым поясом в Core Data

#iphone #core-data #nsdate

#iPhone #core-данные #nsdate

Вопрос:

Когда я сохраняю дату в CoreData как [Дата NSDate], она сохраняется с разницей в 5:30. В core data я использовал тип атрибута в качестве даты.

Как сохранить NSDate с часовым поясом?

Обновление: вот код, который я использую:

Для сохранения даты:

 database = (DataBase*) [fetchResults objectAtIndex:indexVal]; 
[database setDate:[NSDate date]]; 
NSError error = nil; 
[managedObjectContext save:amp;error] 
  

Для получения даты:

 DataBase *newDataBase = (DataBase) [fetchResults objectAtIndex:i]; 
NSDate *RetrivedDate = [newDataBase Date]; 
NSLog(@"Retrived Date :",RetrivedDate"); 
  

Перед сохранением я регистрирую его. Он показывает текущую дату и время. После сохранения я сразу же извлек дату. но он показал дату задержки на 1 день..

Ответ №1:

У NSDate нет часового пояса. Он сохраняет даты в виде количества секунд с момента базовой даты в GMT.

Часовой пояс применяется при форматировании даты для отображения с помощью NSDateFormatter. По умолчанию будет выбран часовой пояс устройства.

Комментарии:

1. Но я сохранил дату как [NSDate date] и перенес дату как NSDate * dat = [db Date]; Он показывает разницу в один день и один час.. Как это решить.

2. А также я проверил разницу между двумя датами сразу после сохранения в БД. затем получил разницу в один день. Пожалуйста, помогите

3. Можете ли вы обновить свой вопрос с помощью кода, если у вас есть конкретный пример?

4. Вот мой код // хранение базы данных = (DataBase *) [fetchResults objectAtIndex:indexVal]; [database setDate:[NSDate date]]; Ошибка ошибки = nil; [managedObjectContext save:amp;error] // восстановление базы данных * newDataBase = (DataBase ) [fetchResults objectAtIndex:i]; NSDate* RetrivedDate = [Дата новой базы данных]; NSLog(@»Дата восстановления:»,RetrivedDate»); Здесь дата восстановления дает разницу в 1 день и 1 час и 15 минут.

5. Я сделал. при сохранении до того, как я его зарегистрирую. он показывает текущую дату и время. После сохранения я сразу же извлек дату. но он показал дату задержки на 1 день.. В любом случае спасибо за ваши комментарии