Как отфильтровать дату независимо от часового пояса?

У меня есть массив объектов, где каждый объект имеет свойство даты.

Дата в формате ISO 8601

Когда я пытаюсь отфильтровать этот массив на основе даты, используя формулу электронной таблицы, как это

[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)

Это преобразует ваши значения даты в коллекции в соответствующую дату в соответствии с часовым поясом браузера. После этой предварительной обработки ваш запрос должен работать как положено.

Другие вопросы по тегам