Хелоу! Мне хотелось сделать на php скрипт, который будет считать сколько осталось до Нового Года (в днях, часах, минутах и секундах). Буду признателен если подкинете код.
Ответы (5 шт):
$realtime = mktime(0, 0, 0, 01, 01, 2012); $futuretime = $realtime — time(); echo date(«До нового года: j дней h часов i минут s секунд», $futuretime);
Запостю тоже, так как когда начал писать — ответов не было. не пропадать же труду 🙂
$currentYear = date(‘Y’); // получаем текущий год $newYear = mktime(0, 0, 0, 1, 1, $currentYear + 1); // высчитываем дату Нового Года $seconds = $newYear — time(); $days = 0; $hours = 0; $minutes = 0; $oneMinute = 60; $oneHour = 60 * $oneMinute; $oneDay = $oneHour * 24; if ($seconds / $oneDay > 0) < $days = (int)($seconds / $oneDay); $seconds -= $days * $oneDay; >if ($seconds / $oneHour > 0) < $hours = (int)($seconds / $oneHour); $seconds -= $hours * $oneHour; >if ($seconds / $oneMinute > 0) < $minutes = (int)($seconds / $oneMinute); $seconds -= $minutes * $oneMinute; >printf(‘К Новому Году осталось: %02d дней %02d часов %02d минут и %02d секунд’, $days, $hours, $minutes, $seconds);
$date = date_create(); //текущая дата $datka = date_format($date, ‘d.n.Y’); $newYear = 12; //последний месяц года $arr = explode(‘.’, $datka); $month = []; //здесь будет количество дней, в каждом месяце текущего года for($i = 1; $i echo »; print_r($month); echo »; $ostatok = 0; for($j = $arr[1]; $j echo ‘Количество дней до Нового года: ‘ . ($ostatok — $arr[0]);
$date = date(‘L’); if($date == 1)< $endYear = 366-date(‘z’); echo ‘До конца года осталось ‘.$endYear.’ дней.’; >else
Источник: husl.ru
сколько дней осталось до нового года?
Программа которая считает дни до нового года
Напишите программу, которая получает день и номер месяца, а выводит количество дней, оставшихся до нового года. Считайте, что год невисокосный (365 дней). Учтите что слова «дней» может иметь также формы «день» и » дня «
Регистрация: 03.01.2014
Сообщений: 2,870
Напишите программу, |
А, сами не пробовали?
Регистрация: 04.03.2014
Сообщений: 2
пробуя вот, но ничего не выходит(не могу сообразить с чего начать
Регистрация: 03.01.2014
Сообщений: 2,870
пробуя вот, но ничего не выходит(не могу сообразить с чего начать
Начните с обработки исходных данных. На основании введённых дня и месяца, определите, какой это по счёту день в году. А, дальше уже будет проще.
Регистрация: 11.10.2011
Сообщений: 3,882
Есть много путей решения.. предложу такой..
Читаем d, m. Описываем процедуру NextDay, которая меняет d, m. (а т.к. год невисокосный, то она будет простая).. и крутим её, увеличивая счетчик, пока d <> 1 и m <> 1.. всё.. (ну пожалуй можно еще учесть случай, когда d и m уже 1 1.. можно на if’ить.. а можно крутить repeat..
За 30 Минут до Нового Года — Уральские Пельмени | ЭКСКЛЮЗИВ
Источник: www.programmersforum.ru
Вычисляем дни до Нового Года
Здравствуйте, многим известно, что до Нового Года осталось считанные дни, так вот к чему данная статья. Данная статья пока что еще не будет итогом работы моего блога в течении этого года и не будет нести поздравительный, пока еще что характер. А статья моя о том, которая поможет программно вычислить сколько до Нового Года осталось времени. Вычислять оно будет не сколько дней, а вот в таком формате:
До Нового Года осталось 0 месяцев 20 дней 3 часа 25 минут 43 секунды и каждую секунду естественно будет происходить обновление. Такое конечно можно сделать с любым праздником, с любой датой, которая только Вам понравится.
Вы возможно часто замечали на сайтах есть уже давно такие скрипты, на том же сайте Delphi в Internet также есть подобный счетчик, который показывает сколько осталось до окончания конкурса, который организовал данный сайт. Вот эта программка и предназначалась для того конкурса, не вся конечно, то есть это была бы не программка, а я хотел сделать скринсейвер, который закончен только на половину и эта надпись до Нового Года осталось столько-то, присутствует в моем скринсейвере, но учеба на водительское удостоверение, подготовка к сессии не дало мне до конца довести проект.
Но зато теперь я с водительским удостоверением. Конечно очень хотел поучаствовать в конкурсе, но не судьба, ничего как-нибудь переживем, думаю еще не мало будет подобных конкурсов. Ну так вот вернемся к нашей программке. Что нам для реализации данной программы понадобиться — это только TTimer. Таймер нам необходим для того, чтобы каждую секунду обновлять.
Конечно тут немного я неправильно сделал, проблема у меня возникла в том, что необходимо было определять сколько дней в текущем месяце, чтобы подсчитать сколько дней осталось до Нового Года и тут у меня возникла проблема с високосным годом, но эту проблему я решил с помощью функции IsLeapYear, после этого я просто делал проверку на то, какой сейчас месяц и в переменной хранил количество дней в месяце, в других месяцах может быть только 30 или 31 день. Только после этого как я все уже подготовил, я понял, что я очень глупо поступил. Ведь в Delphi есть замечательная функция, которая возвращает количество дней в указанном году и месяце. Но ничего я уже не стал делать второй вариант с данной функцией, так что обойдемся без нее.
Но про данную функцию скажу — DaysInAMonth, у данной функции два параметра типа Word. Первый — год и второй параметр — месяц, для которого вычислять количество дней. Все просто как видите, применение следующее
procedure TForm1.FormCreate(Sender: TObject); begin caption:=Inttostr(DaysInAMonth(2010,12)); end;
В результате вернется результат — 31. И действительно ведь в декабре 2010 года 31 день =).
Ну что теперь вернемся к нашей программе. После того как мы определили сколько дней в месяце, то мы спокойно мы просто вычисляем результат. А вычисляется он просто, от 12 отнимаем номер текущего месяца, от текущего количества дней в месяце отнимаем текущее число, от 24 отнимаем количество часов текущее и тоже самое делаем с минутами и секундами. Все просто, может я как-то немного ошибся в расчетах, так что не судите строго. Вот я написал какую функцию
function TForm1.GetDaysToNewYear(Dates,Times: String): String; var d,m,y,h,s,minut:String; daym,hous,minutes,second:Integer; begin d:=Copy(Dates,1,pos(‘.’,Dates)-1); Delete(Dates,1,pos(‘.’,Dates)); m:=Copy(Dates,1,pos(‘.’,Dates)-1); Delete(Dates,1,pos(‘.’,Dates)); y:=Dates; h:=Copy(Times,1,pos(‘:’,Times)-1); Delete(Times,1,pos(‘:’,Times)); minut:=Copy(Times,1,pos(‘:’,Times)-1); Delete(Times,1,pos(‘:’,Times)); s:=Times; if h=’0′ then hous:=24 else hous:=StrToInt(h); if minut=’0′ then minutes:=1 else minutes:=StrToInt(minut); second:=StrToInt(s); if m=’2′ then begin daym:=28; if IsLeapYear(StrToInt(y)) then daym:=29; end; if (((StrToInt(m) mod 2)<>0) and (StrToInt(m))) or (m=’8′) or (m=’12’) or (m=’10’) then daym:=31; if (((StrToInt(m) mod 2)=0) and (StrToInt(m))) or (m=’9′) or (m=’11’) then daym:=30; result:=’До Нового Года осталось ‘+IntToStr(12-StrToInt(m))+ ‘ месяцев’+IntToStr(daym-StrToInt(d))+’ дней’+IntToStr(24-hous)+ ‘ часов’+IntToStr(60-minutes)+’ минут’+IntToStr(60-second)+’ секунд’; end;
Применять данную функцию стоит в следующем формате
procedure TForm1.Timer1Timer(Sender: TObject); begin Caption:=GetDaysToNewYear(FormatDateTime(‘dd.m.yyyy’,Date),FormatDateTime(‘h:m:s’,Time)); end;
Как видите в данной функции происходит разбиение времени и даты на отдельные части. То есть разбиваем часы, минуты, секунды и так далее на разные части и затем просто вычисляем сколько времени осталось.
Кстати, на ОС linux ubuntu также можно сделать такой счетчик дней до праздника. Но тут нужна среда разработки, например Lazarus |
Исходники можно скачать тут
Автор статьи — Andrey53
Источник: zaokomtek.ru