2012-01-04 3 views

ответ

6

Он возвращает текущую дату и время. NSDate не зависит от времени. -description NSDate может быть в GMT, но он не гарантирован.

Представление не может оставаться постоянным в разных версиях операционной системы. Чтобы форматировать дату, вместо этого следует использовать объект форматирования даты.

Если вы хотите отобразить или разобрать дату в другом часовом поясе, используйте NSDateFormatter (и изменить его часовой пояс/локали свойство) или использовать -descriptionWithLocale:.

NSLocale* currentLocale = [NSLocale currentLocale] 
NSLog(@"current locale = %@", [currentLocale localeIdentifier]); 
NSLog(@"date = %@", [[NSDate date] descriptionWithLocale:currentLocale]; 
+0

на моем симуляторе он возвращает время по Гринвичу .. 12:36:33 а фактическое время моего симулятора показывается 6:09 вечера ..: O –

+0

@AnkitSrivastava: Как вы печатаете время? – kennytm

+0

NSLog (@ "nsdate% @", [NSDate date]); –

1

NSDate не зависит от часовой пояс. Когда вы получаете описание с description, он отображает часовой пояс, но это полностью «информационный», и, насколько мне известно, нет возможности установить или получить доступ к этой информации о часовом поясе (кроме description). Значение, хранящееся в объекте NSDate, должно быть (должно быть) GMT/UTC (хотя, конечно, оно не может сказать, если вы кормите его в неправильное время).

Чтобы получить представление симулятора о текущем времени и дате, используйте [NSDate date]. Отформатируйте его (если необходимо) с помощью NSDateFormatter.

+0

и если я использую .. NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat: @ "yyyy-MM-dd hh: mm: ss"]; NSString * theDate = [dateFormatter stringFromDate: [NSDate date]]; NSLog (@ "дата% @", theDate); это дает мне правильное значение (мое текущее системное время), хотя я не указал часовой пояс. –

+2

Когда вы это сделаете, NSDateFormatter неявно подбирает текущий часовой пояс и локаль. Вы можете явно установить эти вещи, если хотите что-то другое. –

+0

Хорошо ... тогда как я могу получить объект nsdate, который содержит мою системную дату ...? –

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