Willian Faria Posted February 16, 2013 at 05:11 PM Report #495585 Posted February 16, 2013 at 05:11 PM (edited) Prezados: Em relação a função mktime: Suponha que utilizemos esta função da seguinte forma: $teste = date('d/m/Y', mktime(0, 0, 0, $mes, $dia, $ano)); Atribuindo a variavel $ano o ano 2013, a variavel $teste conterá o valor: 31/03/2013 Porém se é passado a variavel $ano o ano igual ou maior que 2038 a variavel $teste esta recebendo o valor: 01/01/1970 Sendo assim que a função mktime não manipula datas inferior a 1970 e superior a 2037. Estou tendo trabalar com esta linha de comando para subtrair um periodo de dias de uma data obtida pelo algoritmo de Delambre que tem como finalidade retornar a data da Pascoa e assim com base nesta infomração obter a data da terça-feira de carnaval que é 47 dias anteriores a data da pascoa. Então como faço para resolver este problema? Que função substitui a função mktime ou que outra alternativa pode ser usada? Obs.: Há um bug conhecido com easter_date () que pode retornar datas incorretas de alguns anos: Ele está aparentemente relacionado com as configurações de fuso horário. Segundo o site: www.php.net Assim como houve a previsão de problemas na passagem do milénio (o bug do milénio), já se espera um problema para o ano de 2038 desta vez associado à data no formato marca temporal UNIX.[2] http://pt.wikipedia.org/wiki/Era_Unix#Problemas Willian Edited February 16, 2013 at 05:12 PM by Willian Faria
HappyHippyHippo Posted February 16, 2013 at 06:05 PM Report #495595 Posted February 16, 2013 at 06:05 PM $teste = date('d/m/Y', mktime(0, 0, 0, $mes, $dia, $ano)); ??? e que tal: $teste = "$mes/$dia/$ano"; IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
yoda Posted February 16, 2013 at 10:42 PM Report #495676 Posted February 16, 2013 at 10:42 PM Existem várias alternativas : Fazer uma função própria para lidar com as datas; Usar ADODB (http://phplens.com/phpeverywhere/adodb_date_library); Actualizar o PHP para a versão 64 bits (não resolve por completo mas dá uma margem maior); Usar o objecto DateTime em vez da função mktime; before you post, what have you tried? - http://filipematias.info sense, purpose, direction
Icepick.pt Posted February 17, 2013 at 06:56 PM Report #495866 Posted February 17, 2013 at 06:56 PM Aqui há uns tempos atrás escrevi uma função em Javascript para fazer o que tu queres. Talvez consigas resolver o poblema com ela. Só tens que chamar a função, indicando os parametros que queres utilizar. No teu caso acho que será qualquer coisa como: calculaData('31-03-2013','-47','0','0'); // esta função devolve uma string no formato dd-mm-aaaa que corresponde a: // data de inicio + diferença = data de resultado function calculaData(inicio, diferencaDias, diferencaMeses, diferencaAnos){ var dd=inicio.substr(0,2)*1; var mm=inicio.substr(3,2)*1-1;//janeiro é o 0! var yyyy=inicio.substr(6,4)*1; var resultado = new Date(); resultado.setFullYear( (yyyy + diferencaAnos) , (mm + diferencaMeses),(dd + diferencaDias) ); var dd = resultado.getDate(); var mm = resultado.getMonth()+1; //janeiro é o 0! var yyyy = resultado.getFullYear(); if(dd<10){dd='0'+dd}; if(mm<10){mm='0'+mm}; var resultado = dd + '-' + mm + '-' + yyyy; return resultado; }
HappyHippyHippo Posted February 17, 2013 at 07:00 PM Report #495867 Posted February 17, 2013 at 07:00 PM Aqui há uns tempos atrás escrevi uma função em Javascript para fazer o que tu queres. porque estás a responder com javascript numa secção de PHP, onde a pergunta era de PHP onde a pessoa refere que tem problemas com criação de uma texto em PHP com uma data criada e manipulada em PHP ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Icepick.pt Posted February 17, 2013 at 07:27 PM Report #495874 Posted February 17, 2013 at 07:27 PM (edited) Porque não sei se a data é mesmo criada em PHP ou se é originária do utilizador. Porque nem sempre a solução que procuramos acaba por se provar a melhor. Porque o William perguntou ' que outra alternativa pode ser usada'. Porque tenho o hábito de manter uma mente aberta na resolução de problemas, em vez de estreitar as possibilidades sem uma justificação razoável. Porque provávelmente a função até pode vir a servir no futuro para outra pessoa qualquer com o mesmo problema ou outro semelhante, mesmo que não sirva para o William. Porque não tenho a possibilidade de mudar o tópico para a secção de Javascript, nem acho que ela pertença lá. Em todo o caso, podes sempre remover a resposta se achares que é desapropriada. Edited February 17, 2013 at 07:28 PM by Icepick.pt
HappyHippyHippo Posted February 17, 2013 at 07:50 PM Report #495882 Posted February 17, 2013 at 07:50 PM eu nem sou moderador nem nunca removeria um post de uma pessoa (desde que este não fosse claramente ofensivo) IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
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