Показать сообщение отдельно
  #19 (permalink)  
Старый 15.04.2015, 03:17
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Понятно. Ну так решать задачи нужно привязанные к реалиям, а не нечто пространное. Сервер будет хранить дату регистрации как DATETIME. Окончании регистрации при этом хранить не нужно серверу, ему необходимо в таком случае хранить установленный период в днях. По этим двум параметрам можно получить и дату окончания, и проверить скоро ли она наступит, и отправить письмо пользователю за день до ее окончания. Для этого и SQL, и серверный язык имеют набор функций для работы с датой/временем.

JS не исключение, в нем тоже есть инструментарий для подобных операций - объект Date. В реальности сервер вернул бы дату регистрации и ее период определенный конфигураций, а никак не набор месяцев и годов как у вас представлено. Посредством объекта Date и нужно производить расчет на клиенте.

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

Чтобы этой ошибки не возникало, клиент должен производить расчеты по времени клиента, а сервер для этого должен отдавать клиенту не локальное время регистрации, а ее UTC представление. Есть еще один способ, это передача клиенту времени регистрации по локальному времени сервера и смещение временной зоны сервера (от GMT). У сервера смещение к западу будет отрицательными, а к востоку положительными, на клиенте наоборот - к востоку отрицательные, к западу положительные. Разница смещения сервера и клиента позволит получить на клиенте как локальное время, так и отображать время и сервера.

Вот такие задачи решать, и не с абстрактными цифрами напоминающими год, а с временными метками и посредством объекта Date, это была бы польза. А набор цифр и названий месяцев, было бы уместно для задачи "Календарь", хотя и для него нужны были бы только названия месяцев, для локализации.
Ответить с цитированием