Ключевое слово abstract
не имеет значения. Единственное, о чем говорится в спецификации:
Для совместимости со старыми версиями платформы Java разрешено, но не рекомендуется, в качестве стиля, избыточно указывать абстрактный модификатор для методов, объявленных в интерфейсы.
blockquote>Быстрый тест показывает, что ключевое слово действительно не имеет значения. Эти два являются действительными:
abstract class A implements B { } interface B { public void meth(); } abstract class A implements B { } interface B { public abstract void meth(); }
, и оба этих параметра являются недопустимыми:
class A implements B { } interface B { public void meth(); } class A implements B { } interface B { public abstract void meth(); }
A.java:1: A is not abstract and does not override abstract method meth() in B class A implements B { } ^ 1 error
Если бы Вы, оказывается, используете OpenID для аутентификации, , Простое Регистрационное Расширение решило бы проблему для аутентифицируемых пользователей (необходимо будет преобразовать от tz до числового).
Другая опция состояла бы в том, чтобы вывести часовой пояс из предпочтения страны агента пользователя. Это - несколько сырой метод (не будет работать на en-США), но делает хорошее приближение.
Волшебство все, кажется, находится в
visitortime.getTimezoneOffset()
, Это прохладно, я не знал об этом. Делает это работает в Internet Проводник, и т.д.? Оттуда необходимо быть в состоянии использовать JavaScript для Ajax, установить cookie, безотносительно. Я, вероятно, пошел бы путем cookie сам.
необходимо будет позволить пользователю изменять его все же. Мы пытались использовать геолокацию (через maxmind), чтобы сделать это только что, и было неправильно обоснованно часто - достаточно сделать его не стоящим выполнения, таким образом, мы просто позволяем пользователю установить его в их профиле и показываем уведомление пользователям, которые еще не установили их.
JavaScript является самым легким способом получить местное время клиента. Я предложил бы использовать XMLHttpRequest для передачи местного времени обратно, и если это перестало работать, отступите к часовому поясу, обнаруженному на основе их IP-адреса.
До геолокации, я использовал MaxMind GeoIP на нескольких проектах, и это работает хорошо, хотя я не уверен, обеспечивают ли они данные часового пояса. Это - сервис, за который Вы платите, и они обеспечивают ежемесячные обновления Вашей базы данных. Они обеспечивают обертки на нескольких веб-языках.
Нет никаких HTTP-заголовков, которые сообщат о клиентском часовом поясе до сих пор, хотя было предложено включать его в Спецификацию HTTP.
, Если бы это был я, я, вероятно, попытался бы выбрать часовой пояс с помощью стороны клиента JavaScript и затем отправить его серверу с помощью Ajax или чего-то.
Самое популярное (== стандарт?) способ определить часовой пояс, который я видел вокруг, просто выяснение у самих пользователей. , Если Ваш веб-сайт требует подписки, это могло бы быть сохранено в данных профиля пользователей. Для скоро пользователей даты могли быть отображены как UTC или GMT или некоторые такой.
я не пытаюсь быть самоуверенным типом. Это просто, что иногда некоторые проблемы имеют более прекрасные решения за пределами любого контекста программирования.
-new Date().getTimezoneOffset()/60;
Метод getTimezoneOffset ()
вычтет ваше время из GMT и верните количество минут. Итак, если вы живете в GMT-8, он вернет 480.
Чтобы выразить это в часах, разделите на 60. Также обратите внимание, что знак противоположен тому, что вам нужно - он вычисляет смещение GMT от вашего часового пояса, не смещение вашего часового пояса от GMT. Чтобы исправить это, просто умножьте на -1. Переход на летнее время.
Вот статья (с исходным кодом), которая объясняет, как определить и использовать локализованное время в приложении ASP.NET (VB.NET, C#):
Вкратце, описанный подход опирается на функцию JavaScript getTimezoneOffset
, которая возвращает значение, сохраняемое в куки сессии и используемое code-behind для корректировки значений времени между GMT и местным временем. Самое приятное, что пользователю не нужно указывать часовой пояс (код делает это автоматически). Есть и другие нюансы (поэтому я и даю ссылку на статью), но предоставленный код делает его действительно простым в использовании. Я подозреваю, что вы можете преобразовать логику в PHP и другие языки (при условии, что вы понимаете ASP.NET).