Проектирование системы - работа с автоматическим продлением аккаунта для пользователей с различным часовым поясом в системе. - PullRequest
0 голосов
/ 16 июня 2011

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

Теперь проблема в том, что эти пользователи автоматически продлеваются на следующий месяц членства, когда платежный шлюз (не следует по Гринвичу) пингует мою систему.

Как лучше всего найти решение, при котором, когда платежный шлюз проверяет связь с моей системой, я обновляю пользователя таким образом, чтобы это имело смысл для их часового пояса? Проблема в том, что если срок действия учетной записи пользователя истекает 5 января, а в часовом поясе пользователя - еще не 5 января, а 5 января - на сервере / платежном шлюзе, как мне это сделать? Я могу придумать несколько странных способов решить эту проблему, но я просто хотел знать, что может быть наилучшим из возможных способов?

Спасибо

1 Ответ

0 голосов
/ 17 июня 2011

Предполагая, что часовой пояс вашей платежной системы фиксирован (даже если это не GMZ), все, что вам нужно сделать, - это конвертировать из часового пояса пользователя в GMT, когда вы имеете дело с пользователями, и из GMT в часовой пояс платежной системы, когда вы имеете дело с платежомsystem.

Таким образом, ваш пользователь - PST, ваша система часовых поясов - EST, и вы находитесь в Англии (или, по крайней мере, у вас GMT).

Пользователь регистрируется на 1 месяц 31.12.2010 в 23:00 (23:00) PST.

PST - это GMT - 8, а EST - это GMT -5 (или это -7 и -4 ... Я регулярно путаю ST и DT ...).

по Гринвичу пользователь зарегистрирован 01.01.11 в 06:00 (6 утра).EST пользователь зарегистрирован 01.01.11 02:00 (2 часа ночи).

Как вы сказали, если вы скажете платежной системе об истечении срока действия пользователя в 31.01.11 в 23:00, она будет выглядеть так:EST и отправьте сигнал об истечении срока действия в 2/1/11 4 утра, что будет 1/31/11 20:00 PST, чтобы пользователь потерял 3 часа.

Но если вы скажете платежной системе, что пользователь истекаетв 2/1/11 2:00 по восточному времени, затем сигнал будет отправлен в 1/1/11 7:00 по Гринвичу, который является 31.01.2011 в 11:00 по тихоокеанскому времени.

Таким образом, вы ВСЕГДА имеете дело с каждым клиентомбудь то пользователь или удаленная система, в часовом поясе этой системы, при условии, что удаленный сайт не поддерживает GMT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...