Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

sakamoto

problema com timestamp

Recommended Posts

Ola a todos!

 

Tenho um seguinte problema: peguei um site já com uma base de dados em mysql onde o campo data de noticias está em timestamp. Consegui fazer o gerenciador certinho porém começou a apresentar uma falha... que o cliente descobriu e me notificou... a partir de 01/08/2012 a data sempre grava com 31/12/1969 (cheguei nesta data de agosto fazendo testes um a um.)

 

O que pode estar acontecendo?

 

abaixo o codigo que utilizo

 

function NTPtoUnixtime($ntptime)
{
   $explodedNTPtime = explode(" ", $ntptime,2);
   $startOfDay = strtotime("Today");
   $timeThroughDay = strtotime($explodedNTPtime[0]) - $startOfDay ;
   return strtotime($explodedNTPtime[1])+$timeThroughDay;
}


$dia= $_REQUEST["data_sistema"];
$diaa=substr($dia,0,2)."";
$mes=substr($dia,3,2)."";
$ano=substr($dia,6,4);

$aux_data = explode("/",$dia);
$DATA = $aux_data[2]."-".$aux_data[1]."-".$aux_data[0];

$diasemana = date("w", mktime(0,0,0,$aux_data[1],$aux_data[0],$aux_data[2]) );

switch($diasemana) {
case"0": $dia_semana = "Sun"; break;
case"1": $dia_semana = "Mon"; break;
case"2": $dia_semana = "Tue"; break;
case"3": $dia_semana = "Wed"; break;
case"4": $dia_semana = "Thu"; break;
case"5": $dia_semana = "Fri"; break;
case"6": $dia_semana = "Sat"; break;

}

switch($aux_data[1]) {
case "01" : $mesprint = "Jan"; break;
case "02" : $mesprint = "Feb"; break;
case "03" : $mesprint = "Mar"; break;
case "04" : $mesprint = "Apr"; break;
case "05" : $mesprint = "May"; break;
case "06" : $mesprint = "Jun"; break;
case "07" : $mesprint = "Jul"; break;
case "08" : $mesprint = "Ago"; break;
case "09" : $mesprint = "Set"; break;
case "10" : $mesprint = "Out"; break;
case "11" : $mesprint = "Nov"; break;
case "12" : $mesprint = "Dez"; break;
}

$ntpTime = "00:00:00.000 ".$dia_semana." ".$mesprint." ".$aux_data[0]." ".$aux_data[2];
$time_adjustment = NTPtoUnixtime($ntpTime);

 

o que gravo na base (que está com varchar 20 é o time_adjustment

 

Alguma luz para este problema?!?!

 

Obrigado a todos

Sakamoto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está tentando imprimir a data por extenso com base no timestamp vindo do banco de dados certo?

 

Existe uma forma mais fácil de se conseguir isso que é utilizando strftime.

 

<?php

header( 'Content-Type: text/html; charset=iso-8859-1' );
setlocale( LC_ALL, 'pt_BR', 'pt_BR.iso-8859-1', 'pt_BR.utf-8', 'portuguese' );
date_default_timezone_set( 'America/Sao_Paulo' );

$timestamp = time( ); // timestamp que virá do banco de dados

echo strftime( '%A, %d de %B de %Y, %H:%M:%S', $timestamp );

// domingo, 30 de setembro de 2012, 11:07:19
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.