aggiungere giorni ad una data

Per aggiungere x giorni ad una data utilizzo questo metodo:

               
list($hour, $min, $sec, $day, $mon, $yr)=explode(" ",date("H i s d m y"));
$data= date($myrow["data_intervento"],mktime($hour, $min, $sec, $mon + $myrow["periodo"] , $day  , $yr)) ;  
echo $data;   

Purtroppo a causa dell'utilizzo della variabile  $myrow["data_intervento"] non ottengo il risultato voluto.

Dove sbaglio?

grazie giovanni

inviato 9 anni fa
bonann23
X 0 X

ma la variabile $myrow["data_intervento"] contiene il formato della data o la data vera e propria?

risposto 9 anni fa
Xscratch
X 0 X

la data estratta dal db.

giovanni

risposto 9 anni fa
bonann23
X 0 X

dal manuale di PHP

string date ( string formato [, int timestamp] )

ecco il tuo errore...

in che formato è la data nel DB?

Y-m-d H:i:s suppongo...

risposto 9 anni fa
Xscratch
modificato 9 anni fa
X 0 X

si

risposto 9 anni fa
bonann23
X 0 X
function addDays( $date, $offset = 0 )
{
   list( $day, $time ) = explode( ' ', $date );
   $day = explode( '-', $day );
   $time = explode( ':', $time );
   $timest = mktime( $time[0], $time[1], $time[2], $day[1], $day[2] + $offset, $day[0] );
   return $timest;
}

// aumenta la data di 5
echo $data = date( "H i s d m y", addDays( $myrow["data_intervento"], 5 ) );
risposto 9 anni fa
Xscratch
modificato 9 anni fa
X 0 X

grazie, provo subito

Giovanni

risposto 9 anni fa
bonann23
X 0 X

purtroppo ricevo questo messaggio:

Notice: Undefined offset: 1 in C:\Programmi\Apache Group\Apache2\htdocs\poste\function\addDays.php on line 4 Notice: Undefined offset: 1 in C:\Programmi\Apache Group\Apache2\htdocs\poste\function\addDays.php on line 7 Notice: Undefined offset: 2 in C:\Programmi\Apache Group\Apache2\htdocs\poste\function\addDays.php on line 7 23 08 2007

mentre il codice che utilizzo è quello che mi hai postatoç

<?php
function addDays( $date, $offset = 0 )
{
   list( $day, $time ) = explode( ' ', $date );
   $day = explode( '-', $day );
   $time = explode( ':', $time );
   $timest = mktime( $time[0], $time[1], $time[2], $day[1], $day[2] + $offset, $day[0] );
   return $timest;
}   
?>

echo date( "d m Y", addDays($myrow["data_intervento"], $myrow["periodo"] ) );

grazie giovanni

risposto 9 anni fa
bonann23
X 0 X

mi puoi postare un esempio di $myrow["data_intervento"] e di $myrow["periodo"]?

risposto 9 anni fa
Xscratch
X 0 X

Allora estraggo dalla mia tabella del Db i dati:

$myrow["data_intervento"](nel db formato data)= "Y-m-d" esempio "2007-07-24"

$myrow["periodo"] (nel db formato integer)= "n" esempio "30"

risposto 9 anni fa
bonann23
X 0 X

Se tu usassi Unix timestamp come formato non avresti grossi problemi basterebbe aggiungere

60*60*24*$giorni_da_aggiungere

(secondi * minuti * 24 ore al giorno)

e poi riformattarla con date () per la visualizzazione.

Quindi per aggiungere 5gg basterebbe aggiungere 60*60*24*5.

risposto 9 anni fa
LonelyWolf
X 0 X
$myrow["data_intervento"](nel db formato data)= "Y-m-d" esempio "2007-07-24"

eh beh...allora per forza da errore, io la funzione l'ho preparata per una data in formato "Y-m-d H:i:s" (che mi hai confermato tu prima) non solo "Y-m-d"!

allora la funzione sarà così:

<?php
function addDays( $date, $offset = 0 )
{
   $day = explode( '-', $day );
   $timest = mktime( 0, 0, 0, $day[1], $day[2] + $offset, $day[0] );
   return $timest;
}
?>

comunque concordo sull'utilizzo del timestamp come formato: è molto più semplice da gestire.

risposto 9 anni fa
Xscratch
X 0 X
echo strtotime ("+10 day"); // dieci giorni da oggi
echo strtotime ("+10 day", mktime (0,0,0,12,31,2008)); // dieci giorni dal 31/12/2008

se vuoi il risultato formattato in gg/mm/aaaa:

date ("d/m/Y", strtotime ("+10 day"));  // dieci giorni da oggi
date ("d/m/Y", strtotime ("+10 day", mktime (0,0,0,12,31,2008)));  // dieci giorni dal 31/12/2008

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda