Дело в том, что я хочу NSDate представление даты 18 июня 1978 года.
Я пытался инициировать NSDate как
dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
self.dateFormatter.timeStyle = NSDateFormatterNoStyle;
self.startDate = [dateFormatter dateFromString:@"19/06/78"];
NSLog(@"%@", self.startDate);
Это дает правильную дату, когда iPhone установлен на датский в международных настройках.
Он не работает с iPhone, для которого установлены английские / американские настройки.
Обратите внимание на дополнительный день (19), потому что Дания в GMT +1, и я думаю, что NSDate по умолчанию имеет время 23:00:00. Это указывает на то, что я не работаю, как задумано.
Я хочу, чтобы указанная выше дата (18/06/1978) представляла объект NSDate независимо от часового пояса, локали и международных настроек на устройстве.
Как этого добиться?
Изменить:
Так что ответ Оле Бегеманна, похоже, решил мою проблему. Его решение создало правильную дату как на устройстве в международных настройках США, так и в международных европейских настройках.
Но когда Apple должна рассмотреть приложение, созданная дата была 17 июня 1978 года. Это имеет смысл, так как я устанавливаю часовой пояс GMT +0000. И Купертино, как GMT -0007 или около того.
Так что это даст день раньше.
Итак, чтобы исправить мой вопрос: я хочу 18-06-1978 независимо от локали, часового пояса, в котором устройство физически или в настройках.
Я пытаюсь установить дату начала 18 июня 1978 года и позже в моем приложении отображать дату в виде строки, отформатированной как «780618» (yyMMdd), независимо от часового пояса или места устройства. Это всегда должно быть "780618", так как это ключевая дата начала для моего приложения.
Так что я могу неправильно заняться проблемой. Вместо того, чтобы пытаться использовать одну и ту же дату везде, я, возможно, должен принять данные о часовом поясе и попытаться настроить NSDateFormatter для вывода правильной даты.
Итак, в основном: мне нужен экземпляр NSDate, который форматирует в 780618 везде - в любом часовом поясе с любыми международными настройками устройства.
Как этого добиться?