Newsgroup: it.comp.www.php
Titolo: Mesi dell'anno

Salve...
č da un pň che smanetto con funzioni di date e robe simili in php ma non
riesco a trovare una cosa ke mi serve.
praticamente mi serve creare un output tipo questo tramite un for
1 -> gennaio
2 -> febbraio
...
12 -> dicembre
praticamente ho visto che con la set_locale posso impostare il formato
italiano ma poi, esiste una funzione alla quale io dico "stampami il valore
dell' $i-esimo mese" e lui mi stampa il nome del mese in italiano?
ovviamente non mi serve il mese in corso ma tutti i mesi dell'anno e non
posso fare staticamente la cosa.
esiste qualcosa di pronto o devo crearmi un array di 12 stringhe e assegnare
maualmente i valori, per poi estrarli?
cosě funziona ma mi sembra molto "grezzo" e se esisteva qualcosa di pronto,
mi avrebbe fatto piacere.
consigli da darmi?
vi ringrazio anticipatamente
ciao, carlo.

 esimo mese" e lui mi stampa il nome del mese in italiano?  
<?php 
setlocale (LC_TIME, "it_IT"); 
$months = array ();
for ($i = 1; $i <= 12; $i++) {
	$months[$i] = strftime ('%B', mktime (0, 0, 0, $i, 1, 2000)); 
}
print_r ($months);
?>
-- 
I am what I am, I do what I can
Vuoi supportarmi? 
http://url.repository.biz/go/3E
L'uomo, conscio di sbagliare, persevera.


grazie mille Setec...
nel frattempo ero riuscito a fare una cosa simile, lamera, molto lamera...
<?
  setlocale(LC_TIME, "it_IT");
  for ($i=0; $i<12; $i++) {
    // 30 = numero di giorni da aggiungere al timestamp
    // 86400 = numero di secondi che compongono un giorno
    $sel=(date("n")==($i+1))?'selected':'';
    $mese=strftime("%B",1074121200+$i*30*86400);
    echo '<option '.$sel.' value="'.$i.'">'.$mese.'</option>';
  }
?>
con questo codice in $mese finisce il mese che ha come timestamp 1074121200
(15 gennaio 2004) ore 00:00:00 al quale sommando $i*30*86400 ($i=0 la prima
volta, poi 1 e poi 2... fino ad 11), viene aggiunto al timestamp 30 giorni
in modo da risultare:
14 febbraio ore 00:00:00
15 marzo ore 00:00:00
14 aprile ore 00:00:00
14 maggio ore 00:00:00
ecc ecc...
spero di essermi spiegato bene... in questo modo avendo il timestamp
risultante di un giorno X all'ora Y del mese ennesimo, posso ricavarmi con
la strftime il nome del "mese in corso", ovvero quello stabilito dal
timestamp.
è una soluzione molto arzigogolata, appunto molto lamera e lo sottolineo,
infatti, anche se non ho capito il tuo codice come funzione, l'ho inserito
ugualmente perchè sembra + snello e adatto allo scopo...
ti ringrazio ancora
ciao ciao

ottengo
Array ( [1] => January [2] => February [3] => March [4] => April [5] => 
May [6] => June [7] => July [8] => August [9] => September [10] => 
October [11] => November [12] => December )
???

arm wrote:

Leggiti il manuale riguardo setlocale.
-- 
I am what I am, I do what I can




hai il LOCALE sbagliato.
usa:
setlocale(LC_ALL, 'it_IT'); 
 
---------------------------------------
Dr.Tarr    
http://drtarr.blog.excite.it
---------------------------------------
-----------------------------------------
Messaggio inviato con Excite Newsgroup.
http://www.excite.it/newsgroup

 
guarda che ottengo questo risultato con il tuo script.
pensavo che potesse dipendere dalla mia configurazione che in qualche 
modo non accetta
setlocale (LC_TIME, "it_IT");

infatti se provo
<?php
setlocale(LC_TIME, "C");
echo strftime("%A");
setlocale(LC_TIME, "fi_FI");
echo strftime(" in Finnish is %A,");
setlocale(LC_TIME, "fr_FR");
echo strftime(" in French %A and");
setlocale(LC_TIME, "de_DE");
echo strftime(" in German %A.\n");
?>
ottengo
Saturday in Finnish is Saturday, in French Saturday and in German Saturday.

Dr.Tarr wrote:

non funz. ci saranno altri problemi chissà.
grazie

  This example works if you have the respective locales installed in 
your system.
???

 
non era sbagliato. LC_ALL è usato per tutte le 'questioni' di 
localizzazione, mentre LC_TIME per data e ora. Se non ti interessa 
localizzare le monetine ma solo il tempo usi LC_TIME.
LC_ALL for all of the below
LC_COLLATE for string comparison, see strcoll()
LC_CTYPE for character classification and conversion, for example 
strtoupper()
LC_MONETARY for localeconv()
LC_NUMERIC for decimal separator (See also localeconv())
LC_TIME for date and time formatting with strftime()
Il 'guaio' è nella seconda parte che cambia per windows
da
setlocale (LC_TIME, "it_IT");
a
setlocale(LC_TIME, 'ita_ita');
e quindi
Array ( [1] => gennaio [2] => febbraio [3] => marzo [4] => aprile [5] => 
maggio [6] => giugno [7] => luglio [8] => agosto [9] => settembre [10] 
=> ottobre [11] => novembre [12] => dicembre )