2014-01-11 15 views
0

Я получаю дату из базы данных в формате Milliseconds. Я принимаю эту дату в формате обычной даты. Но она возвращает неверную дату. После этого дайте мне решение в ИОСПреобразование даты из формата Milliseconds в нормальный формат в ios

дата в миллисекундах 1385856000000

После преобразования этой даты я получаю 10/26/1970.

Но настоящая дата - 12/1/2013.

Я использую следующий код является

int dobint = [secondChangeDob intValue]; 

      NSTimeInterval timeInSecond = dobint/1000; 

      NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeInSecond]; 

      NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
      [formatter setDateFormat:@"MM/dd/yyyy"]; 
      NSString *formattedDate=[formatter stringFromDate:date]; 
      NSLog(@"Formatted Date : %@",formattedDate); 
      NSUserDefaults *dateDef = [NSUserDefaults standardUserDefaults]; 
      [dateDef setObject:formattedDate forKey:@"bDATE"]; 

+0

Я предлагаю получить дату из базы данных как 'NSDate'. –

ответ

2

прерывания INT слишком мал, чтобы держать 1385856000000

поэтому число повреждается

использовать, например, неподписанный долго долго или просто дважды

+0

Я предлагаю заменить его на NSInteger. – Milo

+0

также не забудьте заменить вызов intValue. –

+0

Я бы использовал unsigned, так как это значение без знака –

6

Ваш secondChangeDob как INT не будет работать с таким значением, как Int просто слишком мал, чтобы содержать значение вы хранящий в NSNumber ,

NSTimeInterval имеет тип двойной, так что вы можете попробовать -

NSTimeInterval timeInSecond = [secondChangeDob doubleValue]/1000.0; 

NSNumber есть метод, который возвращает двойной имени doubleValue. Приведенный выше код возвращает secondChangeDob как double, так как при хранении результата в качестве не возникает проблем с литьем типа NSTimeInterval.

-1

Вы можете сделать это следующим образом:

NSDate * MyDate = [NSDate dateWithTimeIntervalSince1970: 1385856000000];

и

NSDate * MyDate = [NSDate dateWithTimeIntervalSinceReferenceDate: 1385856000000];

и

NSDate * MyDate = [NSDate dateWithTimeIntervalSinceNow: 1385856000000];

+0

не ответ и не полезно;) –

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