2012-01-19 4 views
-1

Я использую NSDate для получения текущего времени и даты, но он дает дату и время на основе GMT. Пожалуйста, можете ли вы знать, как получить местное время?Как получить локальную дату и дату?

Заранее благодарен!

+0

смотрите здесь: http://stackoverflow.com/questions/4547379/nsdate-is-not-returning-my-local-time-zone-default-time-zone-of-device – cweinberger

ответ

1

NSDate не имеет информации о часовых поясах. Он всегда хранит даты как абсолютные моменты времени, в GMT.

Использование NSDateFormatter для получения локального (или любого другого часового пояса) представления.

См уместную руководство по программированию: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/DataFormatting/Articles/dfDateFormatting10_4.html

+0

Как получить текущий язык? Не могли бы вы привести несколько примеров? –

+0

Если вы используете NSDateFormatter, он будет автоматически использовать текущий языковой стандарт по умолчанию. Если вам нужно знать язык, вы можете получить его с помощью [NSLocale currentLocale] –

+0

Извините за недоразумение, я хочу получить локальное текущее время, но мне нужно, чтобы формат NSDate использовался только в NSString, поэтому я не могу использовать NSDateFormatter. И я не могу указать Часовой пояс также потому, что на основе местоположения он должен автоматически конвертироваться. –

-1

Привет, я нашел это с другого сайта

NSDate* sourceDate = [NSDate date]; 

NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; 
NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone]; 

NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:sourceDate]; 
NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:sourceDate]; 
NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset; 

NSDate* destinationDate = [[[NSDate alloc] initWithTimeInterval:interval sinceDate:sourceDate] autorelease]; 

Ссылка на веб-сайт является here

+0

Но разве это помогает, когда разница в «-»? –

1
[dateFormatter setTimeZone:systemTimeZone]; 

установить часовой пояс даты с помощью формат даты с указанным выше методом. Это будет работать. Преобразуйте дату в строку, установите формат и часовой пояс и конвертируйте обратно.

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