funzione anno - 1

  • Creatore Discussione Creatore Discussione atonyc
  • Data di inizio Data di inizio

atonyc

Utente Attivo
10 Dic 2008
67
0
0
Ciao ragazzi una domandina semplice semplice ma a cui io non so trovare soluzione, io uso la seguente funzione data

PHP:
$anno = date("Y"); 
$mese = date("m"); 
$anno_cartella = date("Y", strtotime($anno)); 
$mese_file = date("m", strtotime($mese));

e logicamente mi va a riprendere anno e mese del server, ma se volessi prendere anno -1 ad esempio?

per intenderci se uso la funzione sopra mi stampa a video 2010 ma vorrei che sempre tramite funzione mi mettesse 2009 .

Grazie in anticipo
 
Scusami, ma non capisco perché scrivi tutto quel codice. Basta fare così:
PHP:
$anno = date('Y') - 1; // 2009
$mese = date('m'); // 10

ok perfetto,
c'è un eccezzione però es: gennaio 2011 (ovvero 1-2011) lo script dovrebbe restituire dicembre 2010 (ovvero 12-2010) come ovviare a questa anomalia?
 
Puoi fare una cosa di questo tipo:
PHP:
$anno = date('Y') - 1;
$mese = date('m');

if(date('Y') == 2011 && $mese == 1)
    $mese = 12;
Questo vale solamente per gennaio 2011. Se vuoi generalizzare la regola spiegala meglio, perché non ho ben capito come funziona.
 
Provo a spiegarmi meglio lo script praticamente genera mese - 1 e anno corrente (es a febbraio 2010 mette gennaio 2010) con l'ovvia eccezzione di gennaio di ogni anno (dove praticamente mette dicembre e anno - 1).

Ora posto il codice penso che sia corretto, prova a dargli un occhio per vedere se anche per te è ok

PHP:
$anno = date("Y"); 
$mese = date('m') - 1;
if($mese == 0) 
    $mese = 12;  
if($mese == 0) 
    $anno = date('Y') - 1;
 
ciao
sarò fissato (o mono_maniaco) sul time stamp, ma perchè far usare a php un formato a lui poco consono (si sa che i programmi lavorano meglio con i numeri)

PHP:
<?php
$data_oggi=time();//leggo la data in time stamp
$data_ieri= $data_oggi - (1*24*30*60); //tolgo in giorno = 24 ore per 60 minuti per 60 secondi
//traduco la data in forma "umana" nel formato che preferisco
echo "oggi è il: ".date("d/m/Y",$data_oggi)." mentre<br>";
echo "la data di ieri era: ".date("d/m/Y",$data_ieri);
?>
in questo modo non mi devo preuccupare dello scalare del mese ecc...
poi se voglio scalare di 2 giorni basta che al posto di 1 metta 2
 
ciao
così ad occhio e croce mi sembra di sì, anche se un codice è corretto quando fa quello che TU vuoi che faccia.
del resto per vedere se funzia basta che tu aggiunga degli echo

PHP:
echo "sono nel mese ".date('m')." e anno ".date("Y")."<br>";  
$anno = date("Y");  
$mese = date('m') - 1; 
if($mese == 0)  
    $mese = 12;   
if($mese == 0)  
    $anno = date('Y') - 1;
echo "ieri era l'anno $anno e mese $mese<br>";
oggi il mese e l'anno restituiti da date è 10 2010 quindi dovrebbe restituirti 9 2010 (occhio non 09)
questo se non è sballato l'orologio del tuo pc
 

Discussioni simili