Разработка для Sailfish OS: Особенности работы с датами и временными зонами
Здравствуйте! Данная статья является продолжением цикла статей, посвященных разработке приложений для мобильной платформы Sailfish OS. На этот раз речь пойдет об особенностях работы с датами и временными зонами в QML. Начнем статью с описания самой проблемы, а потом перейдем способам её решения.
Описание проблемы
При разработке Sailfish OS приложений довольно часто в том или ином виде придется работать с датами и временем (как, впрочем, и при разработке под любую другую платформу). Для указания даты и времени в приложениях Sailfish OS используются такие компоненты как
DatePickerDialog и
TimePickerDialog. Внутри для управления датой и временем они используют QML-объект
Date, унаследованный от стандартного JavaScript объекта
Date, который не поддерживает возможности создавать дату и время с тайм-зоной отличной от UTC или локальной. Объект Date просто не имеет конструктора и методов для этого.
new Date();
new Date(value);
new Date(dateString);
new Date(year, month[, day[, hour[, minute[, second[, millisecond]]]]]);
Казалось бы, здесь должен помочь третий конструктор из списка, если передать ему строку с датой, временем и смещением относительно UTC, но нет. Временная зона объекта все равно будет локальной, а не той, что указана в смещении.
new Date('Jan 30 2017 10:00:00 GMT+0700') // Jan 30 2017 06:00:00 GMT+0300
Источник