Генерация правил на основе определенных часовых поясов - PullRequest
0 голосов
/ 04 июня 2018

Допустим, пользователь моего приложения установил повторяющееся событие.Его часовой пояс равен America/Denver, поэтому я сохраняю его вместе с rrule, который определяет, когда происходят повторения.

Это работает при условии, что и мой сервер, и все мои пользователи находятся в одном часовом поясе.Однако, допустим, у меня есть другие пользователи, в America/Pheonix и, возможно, America/New_York, которые хотят получить события этого события, определенные пользователем.Мне нужно иметь возможность создавать события, используя время America/Denver, но затем возвращать их пользователю в формате UTC.И наоборот, мне также нужно рассчитать повторяющиеся события, определенные пользователями в America/New_York, и вернуть их как UTC пользователю.

Существует ли библиотека, в которой я могу указать часовой пояс и rrule игенерирует ли он повторяющиеся события на основе правил этого часового пояса (например, соблюдение летнего времени)?Или, может быть, сторонний API?

РЕДАКТИРОВАТЬ: Вот некоторая ясность в моей проблеме.

Допустим, у меня есть повторяющееся событие, которое происходит каждую пятницу в 9 утра.Если я установлю это событие в Колорадо, то время, когда это событие произойдет, будет немного отличаться от времени в Аризоне, которая не имеет летнего времени в течение 5 месяцев в году, которые делает Колорадо.Поэтому в моей базе данных мне нужно хранить часовой пояс, и мне нужен какой-то способ генерировать события на основе правил этого часового пояса.Это часть, в которой я застрял, чтобы найти способ генерировать события на основе правил часового пояса.

1 Ответ

0 голосов
/ 04 июня 2018

Мне нужен способ генерации событий на основе правил этого часового пояса.

Нет, вы этого не делаете.«Правила часового пояса» не имеют отношения к генерации событий.Мероприятие в «каждую пятницу в 9 утра» будет проходить в 9 утра круглый год, независимо от того, активен ли DST или нет.Другими словами, вы можете (и должны) полностью игнорировать DST для rrule-части.

Единственное, что вам нужно сделать, это сохранить оригинальный часовой пояс вместе с каждым вхождением - даты и времени недостаточно- затем просто конвертируйте дату / время в другой часовой пояс на лету, когда вам нужно отобразить его другому пользователю.

Я использовал Moment.js и Moment Timezone для работы с датами раньше, но вывероятно, есть другие варианты там.

...