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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Как детектировать несуществующую дату?

Сообщения:  [1-10]   [11-14] 

 
 автор: Trianon   (01.12.2007 в 10:42)   письмо автору
 
   для: Faraon   (01.12.2007 в 00:56)
 

Конечно, checkdate() решит проблему.

   
 
 автор: Владимир55   (01.12.2007 в 01:00)   письмо автору
 
   для: Faraon   (01.12.2007 в 00:56)
 

Причем checkdate работает и с датами ранее 1970 года (у меня, вроде, так).

   
 
 автор: Faraon   (01.12.2007 в 00:56)   письмо автору
 
   для: Trianon   (01.12.2007 в 00:07)
 

А помоему будет достачно

checkdate (месяц, день, год)

как предложил Гость

   
 
 автор: Trianon   (01.12.2007 в 00:07)   письмо автору
 
   для: Владимир55   (29.11.2007 в 16:05)
 

на самом деле, определить несуществующую дату очень просто.
Если преобразовать дату из человеческого (h1) в линейный формат (l1), затем из линейного - в человеческий(d2), а затем обратно в линейный(l2) то для существующих дат l1 будет равно l2, а для несуществующих будет отличаться.
Человеческий формат -это тройка (год месяц день) ,
а линейный - абсолютный отсчет времени от определенного
момента (unix timestamp или julian day number)

   
 
 автор: afdm   (30.11.2007 в 21:32)   письмо автору
 
   для: Zirkon   (30.11.2007 в 16:46)
 

может быть :))) вот...

<script language="JavaScript">
<!--
monthnames = new Array("Январь", 
"Февраль", 
"Март", 
"Апрель", 
"Май", 
"Июнь", 
"Июль", 
"Август", 
"Сентябрь", 
"Октябрь", 
"Ноябрь", 
"Декабрь");
var linkcount=0;
function addlink(month, day, href) {
var entry = new Array(3);
entry[0] = month;
entry[1] = day;
entry[2] = href;
this[linkcount++] = entry;
}
Array.prototype.addlink = addlink;
linkdays = new Array();
monthdays = new Array(12);
monthdays[0]=31; 
monthdays[1]=28; 
monthdays[2]=31; 
monthdays[3]=30; 
monthdays[4]=31; 
monthdays[5]=30; 
monthdays[6]=31; 
monthdays[7]=31; 
monthdays[8]=30; 
monthdays[9]=31; 
monthdays[10]=30; 
monthdays[11]=31;
todayDate=new Date();
thisday=todayDate.getDay();
thismonth=todayDate.getMonth();
thisdate=todayDate.getDate();
thisyear=todayDate.getYear();
thisyear = thisyear % 100;
thisyear = ((thisyear < 50) ? (2000 + thisyear) : (1900 + thisyear));
if (((thisyear % 4 == 0) 
&& !(thisyear % 100 == 0))
||(thisyear % 400 == 0)) monthdays[1]++;
startspaces=thisdate;
while (startspaces > 7) startspaces-=7;
startspaces = thisday - startspaces + 1;
if (startspaces < 0) startspaces+=7;
document.write("<table>");
document.write("<tr><td colspan=7 align=center>" + monthnames[thismonth] + " " + thisyear + "</td></tr>");
document.write("<tr>");
document.write("<td align=center><font size=2>вс</font></td>");
document.write("<td align=center><font size=2>пн</font></td>");
document.write("<td align=center><font size=2>вт</font></td>");
document.write("<td align=center><font size=2>ср</font></td>");
document.write("<td align=center><font size=2>чт</font></td>");
document.write("<td align=center><font size=2>пт</font></td>");
document.write("<td align=center><font size=2>сбfont></td>"); 
document.write("</tr>");
document.write("<tr>");
for (s=0;s<startspaces;s++) {
document.write("<td></td>");
}
count=1;
while (count <= monthdays[thismonth]) {
for (b = startspaces;b<7;b++) {
linktrue=false;
document.write("<td><font size=2>");
for (c=0;c<linkdays.length;c++) {
if (linkdays[c] != null) {
if ((linkdays[c][0]==thismonth + 1) && (linkdays[c][1]==count)) {
document.write("<a href=\"" + linkdays[c][2] + "\">");
linktrue=true;}
}
}
if (count==thisdate) {
document.write("<font color='FF0000'><b>");
}
if (count <= monthdays[thismonth]) {
document.write(count);
}
else {
document.write(" ");
}
if (count==thisdate) {
document.write("</b></font>");
}
if (linktrue)
document.write("</a>");
document.write("</font></td>");
count++;
}
document.write("</tr>");
startspaces=0;
}
document.write("</table>");
// -->
</script>

:-/

   
 
 автор: Zirkon   (30.11.2007 в 16:46)   письмо автору
 
   для: Faraon   (30.11.2007 в 16:45)
 

Вот этой проверкой и может заняться JS :)

Или уже лучше найти JS-календарь.

   
 
 автор: Faraon   (30.11.2007 в 16:45)   письмо автору
 
   для: Zirkon   (30.11.2007 в 16:42)
 

Если только на JavaScript
Потому-что пользователь и из списка может выбрать 30 февраля.

   
 
 автор: Zirkon   (30.11.2007 в 16:42)   письмо автору
 
   для: Владимир55   (29.11.2007 в 17:31)
 

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

   
 
 автор: Владимир55   (29.11.2007 в 17:31)   письмо автору
 
   для: elenaki   (29.11.2007 в 17:17)
 

Я давно уже об этом мечтаю, но не нашел формы, которая это делает.

Может, подскажете?

   
 
 автор: Владимир55   (29.11.2007 в 17:28)   письмо автору
 
   для: Гость   (29.11.2007 в 17:12)
 

Большое спасибо!

   

Сообщения:  [1-10]   [11-14] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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