• Добро пожаловать на инвестиционный форум!

    Во всем многообразии инвестиций трудно разобраться. MMGP станет вашим надежным помощником и путеводителем в мире инвестиций. Только самые последние тренды, передовые технологии и новые возможности. 400 тысяч пользователей уже выбрали нас. Самые актуальные новости, проверенные стратегии и способы заработка. Сюда люди приходят поделиться своим опытом, найти и обсудить новые перспективы. 16 миллионов сообщений, оставленных нашими пользователями, содержат их бесценный опыт и знания. Присоединяйтесь и вы!

    Впрочем, для начала надо зарегистрироваться!
  • 🐑 Моисей водил бесплатно. А мы платим, хотя тоже планируем работать 40 лет! Принимай участие в партнеской программе MMGP
  • 📝 Знаешь буквы и умеешь их компоновать? Платим. Дорого. Бессрочная акция от MMGP: "ОПЛАТА ЗА СООБЩЕНИЯ"

Скрипт Осталось дней до... (22)

xHamer

Интересующийся
Регистрация
15.05.2007
Сообщения
64
Реакции
0
Поинты
0.000
<SCRIPT language=JavaScript>
<!--
d0 = new Date();
d1 = new Date('January 10, 2009');
dt = (d1.getTime() - d0.getTime() ) / (1000*60*60*24);
document.write('Осталось <font size=6><B>' + Math.round(dt) + '</B></size>-дней.');
-->
</SCRIPT>
Я посчитал вручную этот скрипт ошибается ровно на 22 дня. Пробовал поправить это дописав после d0.getTime() + 22 не помогло( Я так понял скрипт ошибается из за того что не умеет автоматически переходить на летнее время и обратно ? Помогите как-то это исправить...

<SCRIPT language=JavaScript>
<!--
d0 = new Date('May 19, 1989');
d1 = new Date();
dt = (d1.getTime() - d0.getTime()) / (1000*60*60*24);
document.write('Я живу <font size=6><B>' + Math.round(dt) + '</B></size>-й день.');
-->
</SCRIPT>
И если тот ошибается значит и этот тоже - сколько я прожил дней. Только чтоб проверить правильность этого скрипта уйдет пару часов...
 

okyl

Специалист
Регистрация
03.10.2007
Сообщения
746
Реакции
22
Поинты
0.000
попробуй использовать .getTimezoneOffset() вместо .getTime()
функция берет время с учетом сдвига по часовому поясу и т.к. jscript выполняется в браузере посетителя, то и будет срабатывать только у кого включен "Автоматический переход на летнее время и обратно"

среднеевропейское время CET, опережает GMT на один час в зимний период и на 2 часа - в летний, так же и ваше местное время
 

xHamer

Интересующийся
Регистрация
15.05.2007
Сообщения
64
Реакции
0
Поинты
0.000
okyl
Я так понял использовать .getTimezoneOffset() нужно только вместо
в первом скрипте d0.getTime()
в втором d1.getTime()
Бо если заменить оба .getTime() на .getTimezoneOffset() будет - Осталось 0-днів, Я живу 0 днів.(учитивать Автоматический переход на летнее время и обратно имеет смысл только для текущей даты(dx = new Date())

Для второго скрипта вроде нормально подкоректировалась дата(+198 дней ) :)

А вот в первом скрипте после изменения d0.getTime() на d0.getTimezoneOffset() стало Осталось 14254 дней (до 10 января 2009) :)
 

xHamer

Интересующийся
Регистрация
15.05.2007
Сообщения
64
Реакции
0
Поинты
0.000
okyl, Я немного разобрался все ровно не могу понять как так может бить:
<SCRIPT language=JavaScript>
<!--
Today = new Date();
Sobitie = new Date('January 10, 2009');
dt = (Sobitie.getTime() / (100*60) - Today.getTimezoneOffset()) / (60*24);
document.write('До собития осталось <B>' + Math.round(dt) + '</B>-дней(дня).');
-->
</SCRIPT>
getTime - возвращает дату в милисекундах
getTimezoneOffset - возвращает дату в минутах
1000 милисекунд - 1 секунда

Sobitie.getTime() / (100*60) - перевожу в минути дату
Sobitie - Today - узнаю сколько в минутах осталось до события

и в результате:
/ (60*24) - делю и узнаю сколько осталось дней до события, должно бить 3XX дней а в результате
тоже - До события осталось 14254-дней(дня). :mad:
 
Последнее редактирование:

okyl

Специалист
Регистрация
03.10.2007
Сообщения
746
Реакции
22
Поинты
0.000
<SCRIPT language=JavaScript>
<!--
d0 = new Date();
d1 = new Date('January 10, 2009');
dt = (d1.getTime() - d0.getTime() ) / (1000*60*60*24);
document.write('Осталось <font size=6><B>' + Math.round(dt) + '</B></size>-дней.');
-->
</SCRIPT>
Я посчитал вручную этот скрипт ошибается ровно на 22 дня. Пробовал поправить это дописав после d0.getTime() + 22 не помогло( Я так понял скрипт ошибается из за того что не умеет автоматически переходить на летнее время и обратно ? Помогите как-то это исправить...

какие 22 дня?:)
у меня этот скрипт все правильно считает. я посчитал по календарю недели и перемножил на 7 плюс дни внутри текущей и последней недели

накидал свой скрипт считает точно так же:

<SCRIPT LANGUAGE="javascript">

today = new Date();
BigDay = new Date("January 10, 2009")
msPerDay = 24 * 60 * 60 * 1000 ;
timeLeft = (BigDay.getTime() - today.getTime());
e_daysLeft = timeLeft / msPerDay;
daysLeft = Math.floor(e_daysLeft);
e_hrsLeft = (e_daysLeft - daysLeft)*24;
hrsLeft = Math.floor(e_hrsLeft);
minsLeft = Math.floor((e_hrsLeft - hrsLeft)*60);
document.write( "До 10 января 2009 года<br>осталось <b>"+daysLeft+"</b> дней(дня), <b>"+hrsLeft+"</b> часов и <b>"+minsLeft+"</b> минут");

</SCRIPT>

ты где-то ошибся в ручных подсчетах. до события даже ориентировочно не может быть 3XX дней, т.к. даже примерно вычитая из 365 - (~30*3=90) (январь,февраль,март) будет менее 300
 
Последнее редактирование:

xHamer

Интересующийся
Регистрация
15.05.2007
Сообщения
64
Реакции
0
Поинты
0.000
Все таки на один день точно ошибается(
жаль что с .getTimezoneOffset() не работает :)

март(6)+апрель(30)+май(31)+июнь(30)+июль(31)+август(31)+сентябрь(30)+октябрь(31)+ноябрь(30)+декабрь(31)+январь(10)=291 день.
 

okyl

Специалист
Регистрация
03.10.2007
Сообщения
746
Реакции
22
Поинты
0.000
Все таки на один день точно ошибается(

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

тем более если ты берешь до заданного дня - 10 января, то 10 января в подсчет не входит, т.е. событие 10 января наступает через секунду после 9 января 23:59:59

у тебя условие до
 
Сверху Снизу