Скрипт Осталось дней до... (22) - Веб-программирование | MMGP
Присоединяйтесь к нашему инвестиционному форуму, на котором уже 457,094 пользователей. Чтобы получить доступ ко многим закрытым разделам и начать общение -  .
Вход через:  
Все, что относится к Web-Программированию (PHP, Perl, JavaScript, MySQL, XML и т.д.)
При поддержке
Сеть доставки контента, выбранная космическими агентствами
Важная информация
Узнай, кто стал "Бизнес-леди MMGP-2018"
Внимание! Акция для копирайтеров: ЭПС-эксперт (2-10 поинтов за 1000 символов)
Есть опыт работы с криптовалютами? Заведи Крипто-Блог и заработай на нём!
Торгуешь криптовалютой? Оставь свой отзыв о бирже!
Разбираешься в криптовалюте? Прими участие в акции Крипторайтер 2.0 (2-10 поинтов за 1000 символов)
Изменения в акции "Оплата за сообщения".
Как на одной публикации заработать $100
Ответить
 
Первый пост Опции темы
Сообщения прочитаны и/или просмотрены Сегодня, 04:15
Старый 19.03.2008, 08:45
#1
Интересующийся
 
Пол: Мужской
Адрес: UA
Инвестирую в: HYIP Фонды
Регистрация: 15.05.2007
Сообщений: 64
Благодарностей: 0
УГ: 0
КП: 0.000
Скрипт Осталось дней до... (22)

Цитата:
<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>
И если тот ошибается значит и этот тоже - сколько я прожил дней. Только чтоб проверить правильность этого скрипта уйдет пару часов...
xHamer вне форума  
Старый 19.03.2008, 10:57
#2
Специалист
 
Пол: Мужской
Регистрация: 03.10.2007
Сообщений: 746
Благодарностей: 165
УГ: 0
КП: 0.000
попробуй использовать .getTimezoneOffset() вместо .getTime()
функция берет время с учетом сдвига по часовому поясу и т.к. jscript выполняется в браузере посетителя, то и будет срабатывать только у кого включен "Автоматический переход на летнее время и обратно"

среднеевропейское время CET, опережает GMT на один час в зимний период и на 2 часа - в летний, так же и ваше местное время
okyl вне форума  
Старый 19.03.2008, 20:06
#3
Интересующийся
 
Пол: Мужской
Адрес: UA
Инвестирую в: HYIP Фонды
Регистрация: 15.05.2007
Сообщений: 64
Благодарностей: 0
УГ: 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 вне форума  
Старый 19.03.2008, 22:25
#4
Интересующийся
 
Пол: Мужской
Адрес: UA
Инвестирую в: HYIP Фонды
Регистрация: 15.05.2007
Сообщений: 64
Благодарностей: 0
УГ: 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-дней(дня).

Последний раз редактировалось xHamer; 19.03.2008 в 22:49.
xHamer вне форума  
Старый 24.03.2008, 22:30
#5
Специалист
 
Пол: Мужской
Регистрация: 03.10.2007
Сообщений: 746
Благодарностей: 165
УГ: 0
КП: 0.000
Цитата:
Сообщение от xHamer Посмотреть сообщение
Цитата:
<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

Последний раз редактировалось okyl; 24.03.2008 в 22:34.
okyl вне форума  
Сказали спасибо:
xHamer (25.03.2008)
Старый 25.03.2008, 18:11
#6
Интересующийся
 
Пол: Мужской
Адрес: UA
Инвестирую в: HYIP Фонды
Регистрация: 15.05.2007
Сообщений: 64
Благодарностей: 0
УГ: 0
КП: 0.000
Все таки на один день точно ошибается(
жаль что с .getTimezoneOffset() не работает (:

март(6)+апрель(30)+май(31)+июнь(30)+июль(31)+авгус т(31)+сентябрь(30)+октябрь(31)+ноябрь(30)+декабрь( 31)+январь(10)=291 день.
xHamer вне форума  
Старый 26.03.2008, 04:30
#7
Специалист
 
Пол: Мужской
Регистрация: 03.10.2007
Сообщений: 746
Благодарностей: 165
УГ: 0
КП: 0.000
Цитата:
Сообщение от xHamer Посмотреть сообщение
Все таки на один день точно ошибается(
это проблема не программного метода, а разработчика, который задает логику.
скрипт просто включает в подсчитываемое количество дней и текущий день.
ты должен сам определиться и задать логику либо включать текущий день и последний день в подсчет либо нет.

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

у тебя условие до
okyl вне форума  
Ответить
Войдите, чтобы оставить комментарий.
Сообщения прочитаны и/или просмотрены Сегодня, 04:15
Опции темы

Быстрый переход


Случайные темы
Аватар Sergo78
Мои мучения с Ukash!
От Sergo78 в разделе «Другие платежки»
Аватара нет
Защита авторских прав с помощью протокола Bitcoin
От Alex077 в разделе «Новости криптовалют»
Аватар AlexRover
Математика кальянного бизнеса
От AlexRover в разделе «Прочие виды инвестиций»
Аватар webpoints
Нужно проиндексировать сайт, загнать в каталоги
От webpoints в разделе «Вопросы по маркетингу от новичков»
Аватар Meggido
Ввести какой-нибудь ценз на хайпы.
От Meggido в разделе «Псевдоинвестиции: общий форум»
.     
Пользователей
457,094
Тем
534,732
Сообщений
13,468,309

mmgp.telegram