Можно заставить локальное смещение часового пояса клиента получать время GMT и затем добавлять часы смещения часового пояса Германии (Центрально-европейское время GMT+1):
function getDate(offset){
var now = new Date();
var hour = 60*60*1000;
var min = 60*1000;
return new Date(now.getTime() + (now.getTimezoneOffset() * min) + (offset * hour));
}
//...
var dateCET = getDate(1); // Central European Time is GMT +1
if (dateCET.getHours() < 12) {
alert ("Good morning.");
} else {
alert ("Good afternoon.");
}
Обновление: я соглашаюсь с @Josh, вышеупомянутый код является полностью клиентским зависимым. Давайте попытаемся сделать это лучше:
$(document).ready(function(){
var timezone = "Europe/Berlin";
$.getJSON("http://json-time.appspot.com/time.json?tz="+timezone+"&callback=?",
function(data){
if (data.hour < 12) {
alert ("Good morning in "+timezone);
} else {
alert ("Good afternoon in "+timezone);
}
})
});
Мы теперь используем в своих интересах JSONP, чтобы сделать Междоменные запросы к сервер jsontime , этот сервер подвергает полный API JSON информации о часовом поясе и времени запроса.
можно играть с кодом здесь , и можно исследовать JSONP API здесь .
Ура!, никакой серверный код!
Вот пример функции для этого, которая немного подробнее, я не помню, откуда я это взял (много лет назад), или если бы я ее изменил, иначе я бы включил правильную атрибуцию:
CREATE FUNCTION [dbo].[fnAppEmailCheck](@email VARCHAR(255))
--Returns true if the string is a valid email address.
RETURNS bit
as
BEGIN
DECLARE @valid bit
IF @email IS NOT NULL
SET @email = LOWER(@email)
SET @valid = 0
IF @email like '[a-z,0-9,_,-]%@[a-z,0-9,_,-]%.[a-z][a-z]%'
AND LEN(@email) = LEN(dbo.fnAppStripNonEmail(@email))
AND @email NOT like '%@%@%'
AND CHARINDEX('.@',@email) = 0
AND CHARINDEX('..',@email) = 0
AND CHARINDEX(',',@email) = 0
AND RIGHT(@email,1) between 'a' AND 'z'
SET @valid=1
RETURN @valid
END
Из снимка Томалака
select 1
where @email not like '%[^a-z,0-9,@,.]%'
and @email like '%_@_%_.__%'