Как отфильтровать дату независимо от часового пояса?
У меня есть массив объектов, где каждый объект имеет свойство даты.
Когда я пытаюсь отфильтровать этот массив на основе даты, используя формулу электронной таблицы, как это
[Date]=Date(2017,8,2)
Эта формула работает только в часовом поясе +1:00. Не работает ни один другой часовой пояс. Как я могу заставить эту формулу работать в любом часовом поясе?
Я использую библиотеку расширенных представлений от Grapecity.
1 ответ
Я не мог найти способ установить часовой пояс в запросе для SpreadView либо. В ответе на подобный запрос они упомянули, что они не поддерживают часовой пояс в своих элементах управления. Вы можете, однако, применить промежуточное решение. Похоже, они учитывают часовой пояс текущего браузера, когда вы передаете объект типа даты Date(yyyy,mm,dd)
, Таким образом, если вы можете преобразовать даты в свои данные, которые вы получаете (или в массив ваших объектов) в часовом поясе браузера, это теоретически решит вашу проблему. Вы можете конвертировать ваши Date
поле в массиве объектов, используя момент.js как
cons convertDateTimeToBrowserTime = (dateTimeWithTimeZone)
=> moment(dateTimeWithTimeZone, 'YYYY-MM-DDTHH:mm:ssZ').local().format('YYYY-MM-DD')
// with recent version of moment, you can use a slightly shorter syntax like:
// => moment(dateTimeWithTimeZone, moment.ISO_8601).local().format(YYYY-MM-DD)
Это преобразует ваши значения даты в коллекции в соответствующую дату в соответствии с часовым поясом браузера. После этой предварительной обработки ваш запрос должен работать как положено.