Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Уточнить дату по МСК JS
 
 автор: AlexDIXI   (09.06.2014 в 11:25)   письмо автору
 
 

Друзья у меня задача. Я указываю дату, вплоть до секунды, но с поправкой надо указать что по

МСК, а не знаю как.

ts = new Date('2014/06/02 15:00:00');


Это мне надо что бы время отсчитывал countdown по МСК

  Ответить  
 
 автор: Commander   (09.06.2014 в 18:06)   письмо автору
 
   для: AlexDIXI   (09.06.2014 в 11:25)
 

Можно отталкиваться от этого скрипта:
var today = new Date();
offset = today.getTimezoneOffset();
today.setMinutes(today.getMinutes() + offset);
document.write("Время по GMT ", today, "<br .>");

Время по МСК на 4 часа / 240 минут (это сейчас) больше. Как только наши парламентарии примут закон, будет на час меньше.

P.S. А вообще, я лично просто взял бы дату / время с сервера, надежнее будет.

  Ответить  
 
 автор: AlexDIXI   (09.06.2014 в 22:57)   письмо автору
 
   для: Commander   (09.06.2014 в 18:06)
 

Спасибо огромное. Но у меня дело в том, что часы обратного отчета надо туда ввести дату при этом с поправкой на Москву но зависит какой GMT у пользователя.

  Ответить  
 
 автор: AlexDIXI   (09.06.2014 в 23:16)   письмо автору
 
   для: Commander   (09.06.2014 в 18:06)
 

Теперь время прыгает но вот по какому, тайм зоне не понятно. Т.к. в коде не указано что время то, МСК которое я указал.



// Time
        var ts = new Date('2014/06/16 15:00:00'); 
        offset = ts.getTimezoneOffset(); 
        ts.setMinutes(ts.getMinutes() + offset); 
        
        
        $('#countdown_1').countdown({
            timestamp    : ts,
            callback    : function(days, hours, minutes, seconds){                
            }
        });


Выводит мне, а у меня + 2, что мне осталось ждать до этого числа, 6 дней 13 ч. что не правда т.к. в Москве будет только 12 дня, а мне надо что бы было 15:00 в итоге, как я и указал дату.

В общем надо что бы указанная дата в date() пересчитывалась учитывая GMT мой на компе и в итоге по истечению приводила к дате и времени по МСК.

  Ответить  
 
 автор: confirm   (10.06.2014 в 00:14)   письмо автору
 
   для: AlexDIXI   (09.06.2014 в 23:16)
 

Часовой пояс на клиенте к Востоку от Гринвича отрицателен, а западнее положителен. РНР же выдаст эти смещения с противоположными знаками. Если отдавать клиенту смещение часового пояса сервера, по которому корректировать время клиента, то у всех клиентов не зависимо от их часового пояса будет отображаться время сервера:

var tm = date((new Date).getTime()/1000+srv+(new Date).getTimezoneOffset()*60);
//где srv - смещение сервера в секундах

  Ответить  
 
 автор: AlexDIXI   (10.06.2014 в 12:35)   письмо автору
 
   для: confirm   (10.06.2014 в 00:14)
 

Но там хостинг, я не могу попросить отрегулировать время по МСК.

  Ответить  
 
 автор: confirm   (10.06.2014 в 12:41)   письмо автору
 
   для: AlexDIXI   (10.06.2014 в 12:35)
 

А этого и не надо, сайт то ваш, вам что сложно передать клиентам московское смещение? И временную зону, кстати, можно установить программно, если только не древняя версия РНР.

  Ответить  
 
 автор: AlexDIXI   (10.06.2014 в 13:06)   письмо автору
 
   для: confirm   (10.06.2014 в 12:41)
 

Т.е. поставить по умолчанию таймзону апачу ?


date_default_timezone_set('europe/moscow')

  Ответить  
 
 автор: confirm   (10.06.2014 в 13:10)   письмо автору
 
   для: AlexDIXI   (10.06.2014 в 13:06)
 

Да, если версия позволяет. А нет, ну не сложно прописать руками значение этой переменной, не 20 раз в день оно же меняется.

  Ответить  
 
 автор: AlexDIXI   (10.06.2014 в 13:14)   письмо автору
 
   для: confirm   (10.06.2014 в 13:10)
 

var tm = date((new Date).getTime()/1000+srv+(new Date).getTimezoneOffset()*60);

А где тут вписать дату которую я хочу что бы отсчитывало время?

  Ответить  
 
 автор: confirm   (10.06.2014 в 13:19)   письмо автору
 
   для: AlexDIXI   (10.06.2014 в 13:14)
 

Какую дату?
Это временная метка на локальном компьютере, которая скорректирована по смещению сервера. Можно и не так поступать, а работать с UTC, но если есть недопонимания этого, то используйте самое простое - коррекцию, уж тут не понять что-то....
А из этой временной метки уже получается год, месяц, дата, .... соответствующими методами объекта Date().

  Ответить  
 
 автор: AlexDIXI   (10.06.2014 в 13:48)   письмо автору
 
   для: confirm   (10.06.2014 в 13:19)
 

Так дайте пример ребята. Вот мне надо что бы была дата что я указал.

  Ответить  
 
 автор: AlexDIXI   (10.06.2014 в 13:48)   письмо автору
 
   для: AlexDIXI   (10.06.2014 в 13:48)
 

Я не до понимаю как использовать этот метод.

  Ответить  
 
 автор: confirm   (10.06.2014 в 14:37)   письмо автору
 
   для: AlexDIXI   (10.06.2014 в 13:48)
 

Вы что хотите: установить московскую дату на часах клиента или синхронизировать часы клиентов по московской дате?
Если первое, то просто вставляйте строку московской даты, если второе, то делайте так как написано выше. Например:

var tm = new Date('2014/06/10 14:30:44'); //здесь строка по Москве
//это же время покажет и клиент, из временной метки по московскому времени
alert(tm.getFullYear()+'/'+(tm.getMonth()+1)+'/'+tm.getDate()+' '+tm.getHours()+':'+tm.getMinutes())

  Ответить  
 
 автор: AlexDIXI   (12.06.2014 в 16:51)   письмо автору
 
   для: confirm   (10.06.2014 в 14:37)
 

+1 это +1 месяц?

  Ответить  
 
 автор: confirm   (12.06.2014 в 17:03)   письмо автору
 
   для: AlexDIXI   (12.06.2014 в 16:51)
 

В JS номер месяца возвращается начиная не 1, а с 0, поэтому и добавляется 1.

  Ответить  
 
 автор: AlexDIXI   (13.06.2014 в 18:51)   письмо автору
 
   для: confirm   (12.06.2014 в 17:03)
 

Я не понимаю ребята что вы дали.

Это не то оно мне выводит дату, сейчас туже что я ввел.

Смотрите. У меня есть таймер обратного отчета.

Я когда ему даю:

// Time
var ts = new Date('2014/06/13 23:30:00');

Мне надо что бы человек из зоны +2 и у него на данный момент '2014/06/13 21:30:00' то ему должно выводить время +2 часа больше так как МСК +4. То если по примерам, моим, то в 21:30 у меня будет как и в Москве. А на данный момент часы показывают что осталось еще 2 часа. Просите если был не точен!

  Ответить  
 
 автор: confirm   (13.06.2014 в 21:10)   письмо автору
 
   для: AlexDIXI   (13.06.2014 в 18:51)
 

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

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

  Ответить  
 
 автор: AlexDIXI   (13.06.2014 в 23:56)   письмо автору
 
   для: confirm   (13.06.2014 в 21:10)
 

Нет акций, есть счетчик до начала вебинара. Буду делать так, у сервера время стоит по МСК. Буду выдергивать время сервера потом время клиента, минусовать и узнавать разницу, эту разницу минусовать с даты которую ввел по МСК. Тобишь сближать время к таймзоне клиента.
Просто думал тут ГУРУ помогут это решить в грамотном варианте. А выходит как всегда.

  Ответить  
 
 автор: confirm   (14.06.2014 в 01:37)   письмо автору
 
   для: AlexDIXI   (13.06.2014 в 23:56)
 

Я вам показал как всем клиентам на часах сделать время сервера, а чтобы иное, то нужно корректировать время клиента на абсолютную разницу часовых поясов. Что тут непонятного, а если что-то иное, опять запутаетесь?

  Ответить  
 
 автор: AlexDIXI   (14.06.2014 в 14:11)   письмо автору
 
   для: confirm   (14.06.2014 в 01:37)
 

А вот оно как. А я не понял сразу. А сервера время как раз МСК, спасибо ребята, за помощь.

А если у меня несколько дат, то мне стоит клонировать для каждой даты? Или достаточно одного раза вызвать эти геты? И еще как их вызвать то правильно без alert()?

Не работает потому что выводит дату не правильно вот так: 2014/6/16 15:0

  Ответить  
 
 автор: confirm   (14.06.2014 в 14:52)   письмо автору
 
   для: AlexDIXI   (14.06.2014 в 14:11)
 

А выводит так потому, что это не функция РНР date(), а объект Date Javascript. Следовательно, чтобы привести возвращаемые им значения к формату YYYY-mm-dd нужно что сделать?

Странно вы вообще со временем обращаетесь. Если принять, что Москва это 0 смещение, то значит восточнее ее народ живет раньше на N часов, а западнее ее наоборот позже на N часов. Вы же пишите, что будете минусовать, а разве это верно для всех?

Я не понимаю что значит несколько дат и зачем их клонировать. Изначально я предположил, что это счетчик акции, и в этом случае то, что вы хотели сделать похоже на то, если бы РЖД вместо одного состава Москва-Владивосток следующего по московскому времени для всех, запускало бы для каждого часового пояса отдельный состав, следующие по расписаниям для каждого часового пояса.

  Ответить  
 
 автор: AlexDIXI   (14.06.2014 в 15:56)   письмо автору
 
   для: confirm   (14.06.2014 в 14:52)
 

У меня после установки юзеру даты по серверу, не пашет модуль отчета времени.
Не хавает плагин этот варинт

// Time
        var ts = new Date('2014/06/16 15:00:00');
        
        ts = ts.getFullYear()+'/'+(ts.getMonth()+1)+'/'+ts.getDate()+' '+ts.getHours()+':'+getMinutes()+':'+getSeconds();
            
        $('#countdown_1').countdown({
            timestamp    : ts,
            callback    : function(days, hours, minutes, seconds){                
            }
        });


Дат несколько т.к. вебинар не один а четыре.

Потому что мне не важно где 0. Мне важно на сколько часов меньше или больше зона у пользователя исходя из МСК даты что я указал. И вычитать или прибавлять к дате которую намечается по МСК.

  Ответить  
 
 автор: AlexDIXI   (14.06.2014 в 16:05)   письмо автору
 
   для: confirm   (14.06.2014 в 01:37)
 

Не правда что дату устанавливает этот код, сервера.

// Time
        var ts = new Date();
        
        var ts = ts.getFullYear()+'/'+(ts.getMonth()+1)+'/'+ts.getDate()+' '+ts.getHours()+':'+ts.getMinutes()+':'+ts.getSeconds();
        
        alert(ts);


Мне вывело мою дату да еще без нулей, пример вывода 2014/6/14 15:5:17

  Ответить  
 
 автор: AlexDIXI   (14.06.2014 в 16:20)   письмо автору
 
   для: AlexDIXI   (14.06.2014 в 16:05)
 

И вообще зачем мне устанавливать серверное время юзеру? Мне дата нужно корректировать по часам так, что бы время которое у пользователя, закончило отчет по его часам. Например я в Москве открыл сайт ,вижу до ветеринара 1 час остался даже если я во Владивостоке сайт открою сейчас, что бы мне так же вывело, до вебинара остался 1 ч.

Я думал есть средствами JS методы, которые бы минусовали бы время или плюсовали бы время пользователя если у него не так как в МОСОВСКОМ часовом интервале, учитывая что МСК это 0.

  Ответить  
 
 автор: confirm   (14.06.2014 в 17:28)   письмо автору
 
   для: AlexDIXI   (14.06.2014 в 16:20)
 

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

Вы прочли по ссылке? Для того, чтобы получить месяц не 1, а 01 (и не только месяц), нужно проверять, если длина строкового значения меньше 2, то дополнить строку 0 в начале.

  Ответить  
 
 автор: moonfox   (14.06.2014 в 17:38)   письмо автору
 
   для: confirm   (14.06.2014 в 17:28)
 

может чел просто логику не курит?
что взять откуда прибавить откуда отнять
чел хочет плагие в котором просто ставишь город и он показывает его время и тд и тп

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования