#objective-c #ios #cocoa-touch
#objective-c #iOS #cocoa-touch
Вопрос:
Я должен анализировать строки типа 2012-06-06T18:00:00
или 2012-06-06
без какой-либо информации о часовом поясе. Когда я анализирую это, средство форматирования даты использует местный часовой пояс и учитывает летнее время.
Но на самом деле дата означает, что это событие происходит 2012-06-06
не в зависимости от часового пояса, а 2012-06-06T00:00:00
в каждом часовом поясе.
Должен ли я хранить значения года / месяца / дня отдельно?
Ответ №1:
Одно и то же время в разных часовых поясах будет соответствовать разным абсолютным временам (которые представлены NSDate). Таким образом, один объект NSDate не может представлять то, что вы пытаетесь представить. Вам понадобится один NSDate для каждого часового пояса, который вас интересует.
Вы можете создать экземпляр NSDateComponent с вашей строкой. Затем используйте NSCalender с языковым стандартом (часовым поясом), который вы хотите преобразовать эти компоненты даты в NSDate (момент времени).
Комментарии:
1. Вы можете создать NSDateFormatter с locale GMT, затем создать NSDate, затем создать NSCalender с locale GMT и получить из него компоненты NSDateComponents (при условии, что у вас одинаковая локаль в NSDateFormatter и NSCalender, вы получите нужные компоненты NSDateComponents). Нет необходимости разбирать вручную.