darky_miguel Posted June 15, 2008 at 05:25 PM Report Share #191359 Posted June 15, 2008 at 05:25 PM pessoal eu tenho uma expressao regex para validar a data que valida anos bisseistos e tudo mas so funciona em javascript e cria por em php tambem mas nao funka pk os criterios devem ser diferentes mas nao sei como converter alguem me pode ajudar plz a expressao e esta "^(((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))$"; Link to comment Share on other sites More sharing options...
pedrotuga Posted June 15, 2008 at 05:28 PM Report Share #191361 Posted June 15, 2008 at 05:28 PM Que expressão regular mosntrusosa, não é melhor pegares no ano e veres se é divisível por quatro? Link to comment Share on other sites More sharing options...
darky_miguel Posted June 15, 2008 at 05:41 PM Author Report Share #191363 Posted June 15, 2008 at 05:41 PM desculpa tar a ser chato mas podias me explicar ? ? Link to comment Share on other sites More sharing options...
pedrosorio Posted June 15, 2008 at 05:50 PM Report Share #191367 Posted June 15, 2008 at 05:50 PM Que expressão regular mosntrusosa, não é melhor pegares no ano e veres se é divisível por quatro? E não divisível por 100, excepto se também for divisível por 400 🙂 Não respondo a dúvidas por mensagem. Link to comment Share on other sites More sharing options...
Dumpster Posted June 15, 2008 at 06:00 PM Report Share #191372 Posted June 15, 2008 at 06:00 PM desculpa tar a ser chato mas podias me explicar ? ? Um ano bissexto ocorre de 4 em 4 anos, se obteres o módulo de 4 do Ano, se der 0 o ano é bissexto, se não der, não será 🙂 Algo como: if($ano%4==0){ echo 'E bissexto! E bissexto!'; } else { echo 'Nao e bissexto T_T'; } 😕 The, old (but still), lulz O: Link to comment Share on other sites More sharing options...
darky_miguel Posted June 15, 2008 at 06:49 PM Author Report Share #191382 Posted June 15, 2008 at 06:49 PM eu fiz uma coisa assim com aquilo que me disseram if (ereg ("([[:digit:]]{1,2})/([[:digit:]]{1,2})/([[:digit:]]{4})",$_POST['data_nascimento'], $regs)) { $dia=$regs[1]; $mes=$regs[2]; $ano=$regs[3]; $minYear=1900; $maxYear=2100; if ($dia < 1 || $dia > 31) { $_SESSION['erro'].="O dia é inválido."; $c++; } else { if ($mes==2) { if ($ano % 4 == 0 &&($ano % 100 != 0 || $ano % 400 == 0)) { if ($dia>29) { $_SESSION['erro'].="o dia e invalido"; $c++; } } else { if ($dia>28) { $_SESSION['erro'].="o dia e invalido"; $c++; } } } } if ($mes < 1 || $mes > 12) { $_SESSION['erro'].="O mes é inválido."; $c++; } if ($ano < $minYear || $ano > $maxYear) { $_SESSION['erro'].="Introduza um ano válido com 4 digitos entre $minYear e $maxYear"; $c++; } } else { $_SESSION['erro'].="A data é inválida."; $c++; mas axo que pode ser melhorado pk nao valida o 31 e o 30 Link to comment Share on other sites More sharing options...
Dumpster Posted June 15, 2008 at 06:56 PM Report Share #191383 Posted June 15, 2008 at 06:56 PM Não faças %100 nem %400, não muda nada. E sim, esse código pode ser melhorado 🙂 Um aparte, sabes da existência disto http://php.net/elseif ? 😕 Ah e para validares o 31 e 30, em vez do módulo de 4, calculas o módulo de 2 do mês. Se der 0 é 30, senão, é 31 Algo como: $mes=date("m"); if($mes%2==0){ echo '30'; } else { echo '31'; } 😕 The, old (but still), lulz O: Link to comment Share on other sites More sharing options...
anolsi Posted June 15, 2008 at 07:34 PM Report Share #191388 Posted June 15, 2008 at 07:34 PM Algo como: $mes=date("m"); if($mes%2==0){ echo '30'; } else { echo '31'; } 🙂 E Agosto(8%2=0), Outubro (10%2=0), Dezembro(10%2=0)? Utiliza antes um switch switch($mes){ case 2: //É Fevereiro case 1,3,5,7,8,10,12 : // É de 31 dias case 4,6,9,11: //É de 30 dias } "Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."Não respondo a questões por PM que possam ser colocadas no fórum! Link to comment Share on other sites More sharing options...
Dumpster Posted June 15, 2008 at 07:37 PM Report Share #191390 Posted June 15, 2008 at 07:37 PM My mistake 🙂 Usa a solução do anolsi ^^ The, old (but still), lulz O: Link to comment Share on other sites More sharing options...
darky_miguel Posted June 15, 2008 at 07:39 PM Author Report Share #191392 Posted June 15, 2008 at 07:39 PM ok brigado pela ajuda 🙂 Link to comment Share on other sites More sharing options...
Betovsky Posted June 15, 2008 at 09:18 PM Report Share #191399 Posted June 15, 2008 at 09:18 PM Não faças %100 nem %400, não muda nada. http://pt.wikipedia.org/wiki/Ano_bissexto#Calend.C3.A1rio_Gregoriano "Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !" Sign on a computer system consultant's desk Link to comment Share on other sites More sharing options...
Dumpster Posted June 15, 2008 at 09:53 PM Report Share #191408 Posted June 15, 2008 at 09:53 PM Ou não 😛 Já está resolvido de qualquer forma ^^ The, old (but still), lulz O: Link to comment Share on other sites More sharing options...
pedrosorio Posted June 15, 2008 at 10:33 PM Report Share #191415 Posted June 15, 2008 at 10:33 PM Já agora dumpster, olha para o número de dias que tem um ano e tenta descobrir porque é que os anos bissextos são esses. Não respondo a dúvidas por mensagem. Link to comment Share on other sites More sharing options...
Dumpster Posted June 15, 2008 at 10:35 PM Report Share #191416 Posted June 15, 2008 at 10:35 PM Já agora dumpster, olha para o número de dias que tem um ano e tenta descobrir porque é que os anos bissextos são esses. lol Não te preocupes eu sei 😛 The, old (but still), lulz O: Link to comment Share on other sites More sharing options...
djthyrax Posted June 15, 2008 at 10:45 PM Report Share #191421 Posted June 15, 2008 at 10:45 PM lol Não te preocupes eu sei 😛 Então é porquê? Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
Dumpster Posted June 15, 2008 at 11:41 PM Report Share #191430 Posted June 15, 2008 at 11:41 PM Então é porquê? lol? Talvez porque os anos bissextos têem 366 dias, e os "não-bissextos" têm 365? Isto suponho para manter um equilibrio anual entre o movimento da Terra e o "tempo" (provavelmente por causa das estações do ano). E após a leitura do artigo dado pelo Betovsky, aparentemente de 400 em 400 anos é ano bissexto, algo que não se aplica de 100 em 100 anos, fazendo estas regras um "override" à de 4 em 4 anos. Lol a tua pergunta foi desnecessária ^^ 1 - Não tem qualquer tipo de propósito. 2 - Se eu digo que sei, eu suponho que (pelo menos isso aplica-se normalmente, não sei quanto a ti 😛 ) tu compreendas que eu digo isso porque sei ^^ The, old (but still), lulz O: Link to comment Share on other sites More sharing options...
djthyrax Posted June 16, 2008 at 12:17 AM Report Share #191434 Posted June 16, 2008 at 12:17 AM 1 - Não tem qualquer tipo de propósito. Nada do que eu digo é por acaso. 😄 Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
Dumpster Posted June 16, 2008 at 12:21 AM Report Share #191437 Posted June 16, 2008 at 12:21 AM Nada do que eu digo é por acaso. 😄 Ilumina-me 😛 The, old (but still), lulz O: Link to comment Share on other sites More sharing options...
djthyrax Posted June 16, 2008 at 12:41 AM Report Share #191439 Posted June 16, 2008 at 12:41 AM Ilumina-me 😛 Nada mais do que um teste. Ler a resposta que deste à pergunta deu para ver que tinhas uma ideia muito vaga, viste o link do Betovsky, leste na diagonal e respondeste. Se não tivesses lido só na diagonal, terias dito que existem anos bissextos por causa do movimento da Terra à volta do Sol, e que os 4 anos vem apenas de uma estimativa de que a Terra faz uma volta completa ao Sol enquanto dá 365.24qualquerCoisa voltas a si própria, e que o para dar uma média de dias por ano o mais aproximada possível desse número se tem que tirar 1 ano todos os 4 anos excepto se o ano for múltiplo de 100 e não for múltiplo de 400, que sabias que a importância da razão tempo calendário:tempo "solar" ser o mais próxima a 1 era de facto o atraso da vinda das estações do ano, algo que influenciava e muito a vida quotidiana na altura.Iluminado? 🙂 Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
Dumpster Posted June 16, 2008 at 12:48 AM Report Share #191440 Posted June 16, 2008 at 12:48 AM Nada mais do que um teste. Ler a resposta que deste à pergunta deu para ver que tinhas uma ideia muito vaga, viste o link do Betovsky, leste na diagonal e respondeste. Se não tivesses lido só na diagonal, terias dito que existem anos bissextos por causa do movimento da Terra à volta do Sol, e que os 4 anos vem apenas de uma estimativa de que a Terra faz uma volta completa ao Sol enquanto dá 365.24qualquerCoisa voltas a si própria, e que o para dar uma média de dias por ano o mais aproximada possível desse número se tem que tirar 1 ano todos os 4 anos excepto se o ano for múltiplo de 100 e não for múltiplo de 400, que sabias que a importância da razão tempo calendário:tempo "solar" ser o mais próxima a 1 era de facto o atraso da vinda das estações do ano, algo que influenciava e muito a vida quotidiana na altura. Iluminado? 😛 Não. Primeiro a única coisa que eu li do link do Betovsky, foram os 400-400, 100-100, porque eu sinceramente não tenho grande interesse por este assunto, nem quero provar nada, logo não vou tar a ler algo só para mostrar a alguém como tu "que sei". Segundo, eu não sei que conteúdo o artigo tem, mas algo me diz que tu também andaste a ver por lá julgando pela tua resposta, o que me faz chegar à seguinte conclusão: "Porque raio hei-de sentir-me iluminado por alguém que me pergunta algo que aprendeu há 5 minutos atrás?". Eu também sei ler. Have fun 🙂 The, old (but still), lulz O: Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now