Scadenza date

gracito

Utente Attivo
30 Mag 2010
109
0
0
Ciao a tutti,

come faccio a sottrarre mesi e anni a una data?

Ho un db con un campo data (che è una data di scadenza), facendo una query mi deve
avvisare un mese prima della scadenza dandomi l'elenco di tutti i documenti scaduti e fin quì tutto ok.
C'è un problema, se la data di scadenza è Gennaio es 15/01/2011 non mi da questa data come scaduta.

PHP:
<?php

$db = mysql_connect("localhost","root","");
mysql_select_db("Palestra", $db);

function conversione($data) 
{ 
  list ($y, $m, $d) = explode ("-", $data); 
  return "$d-$m-$y";
}

  
 ?>
<table width="600" border= "1" align="center" cellpadding="0" cellspacing="0">
        
<tr>
              <th width="174" nowrap bordercolor="#0000FF" bgcolor="#00FF00"><div align="center"><span class="style6"><b>Certificato</b></div></th>
    <br>
   <?php
   
      
   $data = date('Y/m/d', strtotime('-1 months'));  //sottrae un mese alla data
  
     
$result =mysql_query("SELECT * FROM atleti Where Freq = 'SI' and Cert < '$data'  " );

while($myrow=mysql_fetch_array($result)) {
     
echo  "<tr>
<td>".conversione($myrow[Cert])."</td>
</tr>";

}

Cosa fa? Sottrae un mese a gennaio e diventa dicembre?
Diventa 15-12-2011 e per questo non la vede scaduta?
Dovrei dirgli se il mese e gennaio sottrai un anno giusto?
Come si fà?

Grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
come puoi vedere dall es. strotime toglie un mese (o più) facendo scorrere se necessario l'anno


PHP:
<?php
echo "oggi ".date('Y/m/d')."<br>";//output oggi 2011/02/10
echo "1 mese fa ".date('Y/m/d', strtotime('-1 months'))."<br>";//uotput 1 mese fa 2011/01/10
echo "2 mesi fa ".date('Y/m/d', strtotime('-2 months'))."<br>";//uotput 2 mesi fa 2010/12/10
echo "3 mesi fa ".date('Y/m/d', strtotime('-3 months'))."<br>";//uotput 3 mesi fa 2010/11/10
echo "<br>";
echo "tra 13 mesi ".date('Y/m/d', strtotime('+13 months'))."<br>";//uotput tra 3 mesi 2012/03/10
?>
stai però attento quando confronti le date che siano nello stesso formato sia come separatori e che siano del tipo
YYYY-MM-DD (formato americano) perchè se nel formato europeo nel confronto la data 01-01-2011 risulta minore della
23-08-2010 in quanto (anche se sono chiamate date) non è alttro che un confronto tra due stringe

es. mentre la prima if ritorna giustamente TRUE la seconda if erroneamente da FALSE
PHP:
<?php
//formato americano
if('2011/01/11' > '2010/12/31'){
	echo "TRUE<br>";
}else{
	echo "FALSE<br>";
}
//formato europeo
if('11/01/2011' > '31/12/2010'){
	echo "TRUE<br>";
}else{
	echo "FALSE<br>";
}
?>
inoltre devi stare attento ai separatori
es. come date "dovrebbe" dare SONO UGUALI mentre l'uot è E' MAGGIORE
PHP:
<?php
if('2011/01/11' > '2011-01-11'){
	echo "E' MAGGIORE<br>";
}elseif('2011/01/11' < '2011-01-11'){
	echo "E' MINORE<br>";
}else{
	echo "SONO UGUALI<br>";
}
?>
il consiglio che ti ha dato ieldna se uno vuol essere preciso non è propriamente giusto, tolgo 30 o 31 o 28 (e se bisestile 29) con tutte le complicazioni del caso?

p.s.
strtotime secondo il calendario maya non va oltre il 21.12.2012
 
Discussioni simili
Autore Titolo Forum Risposte Data
G Controllo scadenza date PHP 6
E scadenza licenza software PHP 1
P Visual Studio VB.NET Visualizzare un messaggio alla scadenza. .NET Framework 0
crealatualista [PHP] Data di scadenza formato (aammgg) PHP 5
G Controllo scadenza sessioni PHP 2
filomeni Scadenza cookie PHP 3
D [JSP] Gestire eccezioni relative alla scadenza delle sessioni Java 0
S Inviare email reminds scadenza PHP 25
max_400 Scadenza cookie... non si cancella entro il tempo stabilito PHP 1
H Record con scadenza in giorni PHP 2
max_400 php: sessione scadenza a tempo e reidirect - by max4001976 PHP 1
emanuelevt scadenza sessioni PHP 26
neo996sps Scadenza di una news PHP 35
J Scadenza Cookie Classic ASP 5
B Scadenza iscrizione utenti PHP 0
SolidSnake4 tempo scadenza sessioni PHP 6
A scadenza sessione o cookie? PHP 2
G Scadenza Variabili di Sessione Classic ASP 1
T Query con date MS Access 1
MarcoGrazia Calcolo fra due date con esclusione delle feste PHP 7
S Differenza date record successivi MS Access 7
E Format Date PHP 37
napuleone Con le date il codice da di matto o forse non è così Javascript 6
napuleone Con le date mi da di matto o forse è proprio così jQuery 1
elpirata Impedire inserimento data di oggi e date passate jQuery 39
A attributo "min" per input gestione date PHP 8
Alex_70 Javascript date color Javascript 3
FabioJ Formattazione date openoffice calc Linux e Software 0
O query con date in formato stringa PHP 3
F Creare un set di date a seconda del frazionamento scelto da inserire in MySQL PHP 6
S aggiungere colonna date in una tabella già esistente Database 0
P [PHP] Input Type="date" non va correttamente con Apple PHP 2
A [Java]Date diminuite di un giorno su db MySQL Java 0
V [MySQL] problema query con date su server MySQL 5
maxnegri [PHP]Funzione di calcolo prezzo di una camera in un range di date PHP 62
maxnegri Conoscere giorni della settimana fra due date con php PHP 2
S [HTML] Problema <input type="date"> HTML e CSS 0
Daniele_Carrara [Javascript] Modifica input date Javascript 5
Licantropo [MySQL] Cambiare le date MySQL 4
P [PHP] Calcolo prezzi camera in range di date diverse PHP 11
M [PHP] Convertire date da americana a italiana direttamente nel db PHP 6
trattorino [PHP] prelevare minuti da date confrontate PHP 2
Emix [PHP] Differenza Date + Ore PHP 3
MarcoGrazia campo con autocompletamento a formato multiplo (nomi/date) jQuery 3
diego66 [Javascript] Calcolare giorni lavorativi comprese tra due date Javascript 0
napuleone [PHP] Ho la settimana e l'anno cerco le date PHP 4
gandalf1959 Selezionare un intervallo tra due date, php e mysql PHP 2
valvasori [PHP] Proble di date PHP 14
M [PHP] Date(time) PHP 2
filippino Chiavi a corrispondenza inversa per i risultati organici? (Era: come NON farsi trovare con date chia SEO e Posizionamento 4

Discussioni simili