NSDate 5-часовой выходной
1885 просмотра
4 ответа
Я запускаю следующий код:
NSDate * now = [NSDate date];
NSLog(@"now: %@", now);
и получить :
2011-09-16 16: 14: 16.434 iSavemore [1229: 7907] сейчас: 2011-09-16 21:14:16 +0000
Как вы можете видеть, я запускаю это в 16:14:16 (4:14 вечера), но NSDate возвращается 21:16:16 (9:14 вечера!). Это проблема Xcode4 или NSDate?
Автор: Troy Compton Источник Размещён: 13.11.2019 11:47Ответы (4)
9 плюса
NSDate по умолчанию использует универсальный часовой пояс (он же GMT).
Я предполагаю, что вы где-то на восточном побережье, на 5 часов позже UTC.
Попробуйте добавить это к вашему форматеру даты ...
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setLocale:[NSLocale currentLocale]];
... и вы должны увидеть ваше местное время.
Если вы хотите использовать указанную локаль, а не «currentLocale», создайте NSLocale для соответствующей локали.
NSLocale *usLoc = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[dateFormatter setLocale:usLoc];
... на самом деле это США (так что, возможно, не Центральный).
Более конкретную помощь по часовым поясам можно найти здесь ...
Однако, если вы хотите показать время истечения срока действия, не хотите ли вы все еще указать его в currentLocale пользователя?
Автор: Snips Размещён: 16.09.2011 09:265 плюса
Если вы посмотрите на вывод, вы увидите, что журнал включает часовой пояс:
2011-09-16 16:14:16.434 iSavemore[1229:7907] now: 2011-09-16 21:14:16 +0000
^^^^^^
Отметка времени вашего журнала - местное время. Я предполагаю, что вы находитесь в часовом поясе, который на 5 часов опережает UTC.
NSDate относится к определенному моменту времени. Это зависит от вас, чтобы показать это, как вы хотите; обычно с NSDateFormatter.
Это причина, по которой вы увидите множество рекомендаций против сохранения времени или даты как что-либо, кроме NSDate. Если вы попытаетесь сохранить его в виде строки, то позже вы столкнетесь с большими трудностями при работе с дисплеем в разных часовых поясах.
Автор: Abizern Размещён: 16.09.2011 09:320 плюса
Попробуйте установить часовой пояс NSDate на тот, который соответствует вашим потребностям, например [NSTimeZone localTimeZone]
-1 плюса
Просто дикая догадка, но, может быть, это как-то связано с часовыми поясами?
Автор: dee Размещён: 16.09.2011 09:24Вопросы из категории :
- objective-c Приложение для iPhone в ландшафтном режиме, системы 2008
- objective-c Как программно отправить смс на айфон?
- objective-c Открытие нестандартного URL в приложении Какао
- objective-c Каков наилучший способ перетащить NSMutableArray?
- objective-c Как работает пул автозапуска NSAutoreleasePool?
- objective-c Как вы можете создать Makefile из проекта Xcode?
- objective-c Скругленные углы на UIImage
- objective-c Как мне создать временный файл с Какао?
- objective-c Как распечатать трассировку стека на консоль / журнал в Cocoa?
- objective-c @class vs. #import
- xcode4 Изменить шаблоны в Xcode
- xcode4 UINavigationBar - Установить заголовок программно?
- xcode4 XCode 4 Сортировка файлов по имени
- xcode4 Xcode 4 -reinstalls keychain certs, которые я удаляю
- xcode4 Архивы не отображаются в Организаторе для Xcode 4
- xcode4 Xcode 4 Applescript для создания и запуска текущего целевого приложения
- xcode4 Xcode 4 говорит «закончил запуск <мое приложение>» на целевом устройстве - ничего не происходит
- xcode4 Как я могу заставить вкладки работать нормально на Xcode 4?
- xcode4 .app файл отображается красным (отсутствует) в новых проектах с Xcode 4
- xcode4 Как добавить этап сборки в шаблон проекта?