Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 08.08.2018, 11:54
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от hacklife
Я имею ввиду данный вариант работает.
И в чем же заключается "работа"?
Ответить с цитированием
  #12 (permalink)  
Старый 08.08.2018, 13:37
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от hacklife
для любого часового пояса было одинаково, по времени МСК
Перевод даты на московское время
var tzoffset = (new Date()).getTimezoneOffset() * 60000; 
    var date = (new Date(Date.now() + tzoffset + 10800000 ));
alert(date);

Последний раз редактировалось Dilettante_Pro, 08.08.2018 в 17:42.
Ответить с цитированием
  #13 (permalink)  
Старый 08.08.2018, 14:16
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Dilettante_Pro, к западу и востоку смещения часовых поясов имеют разные знаки.
Ответить с цитированием
  #14 (permalink)  
Старый 08.08.2018, 15:06
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

laimas,
И что? Расчет будет неправильно работать?
Для Москвы, например, tzoffset = -10800000
И что из этого?
Ответить с цитированием
  #15 (permalink)  
Старый 08.08.2018, 15:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А как оно может работать правильно, если вычисление будет слева направо, а значит знак может быть не учтен? Либо разность смещений вычитаем, либо в общем выражении выносим их в скобки.
Мало того, у вас московское смещение всегда отрицательно, и будет верно только для тех кто восточнее Гринвича, а кто сказал, что запросы не могут быть с западных. Корректнее смешение сервера передавать самому серверу на клиента. Сервер в отличие от клиента передает их с противоположным знаком - для восточных положительные, для западных отрицательные.

Последний раз редактировалось laimas, 08.08.2018 в 20:45.
Ответить с цитированием
  #16 (permalink)  
Старый 08.08.2018, 16:08
Новичок на форуме
Отправить личное сообщение для hacklife Посмотреть профиль Найти все сообщения от hacklife
 
Регистрация: 07.08.2018
Сообщений: 7

Сообщение от laimas Посмотреть сообщение
И в чем же заключается "работа"?
Кнопка активна только с 16 часов до 17 часов. Но корректно работает только если не переводить время специально, т.к. время берется с компьютера пользователя. У меня к данному промежутку времени привязано событие. И надо сделать так чтобы никто не мог схитрить и переведя часы на минуту вперед нажать кнопку раньше других.
Ответить с цитированием
  #17 (permalink)  
Старый 08.08.2018, 16:15
Новичок на форуме
Отправить личное сообщение для hacklife Посмотреть профиль Найти все сообщения от hacklife
 
Регистрация: 07.08.2018
Сообщений: 7

На данный момент весь кусок кода выглядит вот так

<form action="" method="post" onkeydown="if(event.keyCode==13){return false;}" >
    	

		<input type="hidden" name="do" value="payeer_pay">
		<input type="hidden" name="antipovtor" value="<?=time();?>">


			<table width="930" height="21px" border="0" cellpadding="0" cellspacing="0">
			<tbody><tr>
				<td align="center">
				
				
								 <br><b>Введите сумму вклада (от <?=$mindep?> до <?=$maxdep?> рублей)    Кнопка "Сделать вклад" станет активной во время рестарта </b> <br> <br><input style="text-align:center;" name="m_amount" type="text" value="100" size="5" maxlength="10"><input type="submit" name="submit2" value="Сделать вклад" class="reg"  </td>
			</tr>
			
				
				
				
			
		  </tbody></table>
		</form>


<script>

$(function() {
  
  $('input[type="submit"]').prop('disabled', true);
  
  $('input[name="m_amount"]').keyup(function() {
    
    if($(this).val() != '') {
                 
      $('input[type="submit"]').prop('disabled', false);
    }
  });
});
</script>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>

    
    <script>
        
        $(function(){

            var date = new Date();

            (function dis(){

                $('input[type="submit"]').prop('disabled', date.getHours() !== 16);

                setTimeout(dis,1000);

            })();

        });

    </script>
Ответить с цитированием
  #18 (permalink)  
Старый 08.08.2018, 16:16
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,709

Сообщение от hacklife
мне нужно что бы для любого часового пояса было одинаково, по времени МСК.
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<input type="submit" name="submit2" value="Сделать вклад" class="reg">
<script>
	
	$(function(){
		(function dis(){
			$('input[type="submit"]').prop('disabled', (Date.now() / 1000 / 3600 % 24 | 0) !== 13);
			setTimeout(dis, 1000);
		})();
	});

</script>
Ответить с цитированием
  #19 (permalink)  
Старый 08.08.2018, 16:34
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от hacklife
И надо сделать так чтобы никто не мог схитрить и переведя часы на минуту вперед нажать кнопку раньше других
Этого нельзя гарантировать никаким JS, да и чтобы вы там не блокировали на клиенте, главное, это серверу не принять форму некорректную, и тут гарантией может быть как раз только то, что все работают по времени сервера (выше показано, использовать временную метку, она абсолюта). Сервер обязан проверять при приеме формы время и если соответствует, принимать. Вот только в этом случае, это будет работать.
Ответить с цитированием
  #20 (permalink)  
Старый 08.08.2018, 16:38
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от laimas
А как оно может работать правильно, если вычисление будет слева направо, а значит знак может быть не учтен? Либо разность смещений вычитаем, либо в общем выражении выносим их в скобки.
Мало того, у вас московское смещение всегда отрицательно, и будет верно только для тех кто восточнее Гринвича, а кто сказал, что запросы не могут быть с западных. Корректнее смешение сервера передавать самому серверу на клиента. Сервер в отличие от клиента передает их с противоположным знаком - для восточных отрицательные, для западных положительные.
С какого бы направления они ни были - getTimezoneOffset() приходит со своим знаком, для тех, кто восточнее - с минусом, кто западнее - с плюсом.
Далее по формуле убираем их местное смещение и добавляем отрицательное московское. Вот и все. Время московское, что и хотел ТС.

Насчет того, что клиент может подкрутить часы - это да, на клиенте с этим не справиться. Только сервер.

Последний раз редактировалось Dilettante_Pro, 08.08.2018 в 16:42.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поменять цвет Checkbox в зависимости от ситуации kz___alex Элементы интерфейса 8 28.10.2015 12:16
В зависимости от локального времени меняется задний фон Tchort Events/DOM/Window 3 09.08.2011 17:21
Как поменять свойство плагина? lyapharov jQuery 2 16.04.2011 18:39
Как в общем меню для всех страниц поменять класс определенного пункта в зависимости о phenom Элементы интерфейса 2 08.04.2011 10:09
Поменять background в зависимости от урл faith80 Общие вопросы Javascript 2 30.08.2010 20:27