Как получить фактический первый день месяца, возможно с моим часовым поясом?

Я пытаюсь получить первый день месяца, но получаю значение UTC. Я думаю, что вместо этого мне нужна моя локальная дата?

введите здесь описание изображения


person Jules    schedule 08.05.2015    source источник
comment
NSDate всегда в формате UTC. Если вы хотите получить строку с другим часовым поясом, вот ответ stackoverflow.com/questions/14592556/   -  person Artrmz    schedule 08.05.2015
comment
@Artrmz спасибо за ваш комментарий, мне это действительно нужно как свидание. Не знаю, что здесь делать.   -  person Jules    schedule 08.05.2015
comment
Для чего вам это нужно? Он показывает вам дату, которая на 1 час раньше первого дня месяца, потому что вы, вероятно, живете в часовом поясе +1. Как только вы запустите его на устройстве, он должен показать правильную дату в календаре.   -  person Artrmz    schedule 08.05.2015
comment
@Artrmz Мой часовой пояс — британское летнее время в симуляторе, наверняка он будет таким же и на моем устройстве, и на устройствах пользователей (отражающих их часовые пояса)? Я использую его для выбора определенного дня, либо сегодня, либо выбранного дня в элементе управления календарем (в данном случае первый день месяца, когда я перехожу на новую страницу месяца). Поэтому правильный номер дня важен. Спасибо еще раз.   -  person Jules    schedule 08.05.2015
comment
BST (британское летнее время) равно UTC +1. Это объясняет разницу в 1 час, но я не знаю, почему на самом деле это 1 месяц. В любом случае, вот похожий вопрос, возможно, он поможет вам stackoverflow.com/questions/7089720/   -  person Artrmz    schedule 08.05.2015
comment
@Artrmz это правильный месяц май - 5   -  person Jules    schedule 08.05.2015
comment
@Artrmz, глядя на этот пример, мне тоже нужно переустановить месяц? кажется странным   -  person Jules    schedule 08.05.2015
comment
Это правильный месяц, но последний день месяца, как только вы добавите разницу в часовых поясах, это будет 1 июня.   -  person Artrmz    schedule 08.05.2015


Ответы (1)


Я пробовал это сам:

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *dateComponents = [gregorian components:( NSYearCalendarUnit |
                                                          NSMonthCalendarUnit | NSDayCalendarUnit ) fromDate:[NSDate date]];
[dateComponents setDay:1];
NSLog(@"%@", [gregorian dateFromComponents:dateComponents]);

И он правильно печатает 2015-04-30 22:00:00 +0000, что будет 1 мая, после добавления 2-часовой (в моем случае) разницы во времени. Просто перепроверьте свой код, кажется, что self.calender.currentDate указывает неправильный месяц?

person Artrmz    schedule 08.05.2015
comment
это была другая проблема. - person Jules; 11.05.2015