Newsgroup: it.comp.www.php
Titolo: Avere il nome di un mese a partire da un numero

Sarą una stupidata ma non riesco a trovare una funzione che usavo tanto
sotto ASP.
Ho bisogno di avere il nome del mese partendo dal suo numero ES.:
in asp uso monthname(03) e mi restituisce Marzo.
Io ho solo il numero del mese e tutte le funzionio di PHP che ho trovato
lavorano su date complete, al momento mi creo una data fittizia con il mese
che voglio io ES.:
strftime("%B",strtotime("2006/".$mese."/01"))
Inutile dire che la trovo una soluzione assurda.
Grazie Stefano

> Ho bisogno di avere il nome del mese
Ti crei un bell'array con i nomi in lingua cinese (se ti serve il cinese), e 
per ottenere il nome dal numero ti indirizzi banalmente con 
$array_cinese[$numero_mese-1]. ;-))
rob4you
www.outofmind.eu
 

 $array_cinese[$numero_mese-1]. ;-))
Si be' č esattamente quello che non vorrei fare, insomma ci sono decine di
funzioni che localizzano tutto il lavoro e mi piace usarle (altrimenti che
le hanno messe a fare?), capisco che č piů sicuro farsi degli array
personali e usare quelli, ma vorrei usare proprio le funzioni del PHP come
ho sempre usato le funzioni dell'ASP, anzi spero che anche su PHP ci siano
le funzioni delle valute che inseriscono automaticamente il simbolo
monetario e dividono i numeri con punti e virgole decimali in funzione
della lingua impostata in quel momento senza sbattersi nel frazionare il
numero a con le funzioni stringa.
Ciao Stefano

 Si be' è esattamente quello che non vorrei fare,
Scusa, ma perché no? Se proprio non ti piace il "-1", ti crei l'array con il 
primo elemento fittizio, e hai i mesi da UNO a DODICI, l'array lo chiami 
$monthname come il nome della funzione che ti piace, e quindi hai 
esattamente la stessissima cosa (cioè $monthname[03] vale Marzo). ;-)
Devi solo mettere una riga in più, precisamente la definizione dell'array 
con la sua inizializzazione, con il vantaggio che l'array lo puoi riempire 
con i nomi che più ti piacciono.
Son d'accordo che le funzioni sono fatte per essere usate, ma talvolta, 
quando il problema è proprio banale, nell'ottica del suo immediato utilizzo 
tanto vale partire da zero.
In conclusione tu hai chiesto una questione molto immediata e semplice, e 
tale è stata la risposta (alla quale sicuramente comunque tu avevi già 
pensato). Ovvio che se il problema avesse richiesto tanteeee altre righe di 
codice, allora sì che sarebbe valsa la pena una funziona già bella e pronta.
rob4you 

 Inutile dire che la trovo una soluzione assurda.
http://it.php.net/date
Mattia

 codice, allora sì che sarebbe valsa la pena una funziona già bella e pronta.
Diciamo che è più una questione di "principio", ho sempre usato gli array
anche su ASP poi ho iniziato a sfruttare le funzioni di localizzazione (che
continuo a ripetere se ci sono perchè non bisognerebbe utilizzarle?)
soprattutto quando ho avuto necessità di passare da una lingua all'altra,
in quest'ottica diventa comunque più complicato scriversi n array per
ciascuna lingua.
Comunque veramente non esiste una funzione che mi restituisca il nome del
mese avendo SOLO il numero del mese stesso?

 mese avendo SOLO il numero del mese stesso?
Ma in lingua italiana? In inglese? O in "tutte" le lingue? 



In tutte le lingue che di volta in volta potrei scegliere cliccando sulle
bandierine di un sito.



Mi sembra una risposta decisamente incompleta, ho postato dicendo che avevo
già provato quasi tutte le funzioni di PHP quindi anche la date(), se
faccio date("F","03") non ottengo lo stesso risultato della funzione
monthname("03") di ASP ossia Marzo. Da quello che ho capito anche la
funzine date() vuole il timestamp completo per eseguire tutte le sue
funzioni.
Se però con la funzione da te indicata (che ha un mare di parametri e non
dubito che non sia riuscito a capirli tutti altrimenti non avrei aperto un
post) ottenessi lo stesso risultato potresti farmi un esempio concreto?
Ossia io ho SOLO il numero del mese e voglio ottenere il NOME
corrispondente.
Grazie ancora Stefano

 
Perche' la trovi assurda?
strftime ti formatta la data in base alla localizzazione impostata.
Con una sola funzione ottieni quello che vuoi, invece di avere un 
monthname, dayname, weekname etc.
L'unica "pecca" è l'immissione di una data fittizia: superflua solo per 
ricavare il mese, ma obbligatoria per ricavare il giorno, il weekday etc.
Personalmente preferisco usare strftime con mktime invece di strtotime 
(semplice praticità)
	Francesco

 Ho bisogno di avere il nome del mese partendo dal suo numero
Tratto da 
http://demenziale.altervista.org/phpdev/date.php
Ottenere un array data
Per ottenere un array data, puoi usare la funzione getdate(). La funzione 
getdate() prende come primo argomento un timestamp unix e ritorna e ritorna il 
timestamp in un array contenente quel timestamp nel formato orario della tua 
zona. Se non passi nessun argomento alla funzione getdate() di default il 
timestamp corrente viene preso. Ecco un esempio:
$now = getdate();
print_r( $now );
output:
Array (
	[seconds] => 37
	[minutes] => 23
	[hours] => 21
	[mday] => 5
	[wday] => 4
	[mon] => 10
	[year] => 2006
	[weekday] => Thursday
	[month] => November
	[0] => 1086467017
)
Nota che il timestamp viene inserito all'index 0.
Opzionalmente, puoi usare anche localtime() che mima la funzione in C. 
localtime() è pressapoco identica a getdate() con qualche importante differenza:
  a.. di default, l'array non è associativo
  b.. il range dei mesi va da 0 a 11 (Gennaio è 0)
  c.. L'anno viene contato partendo da 1900. Quindi il 2006 è 106

 timestamp corrente viene preso. Ecco un esempio:
Forse sono io che non mi riesco a spiegare perchè continuo a riceve sempre
metodi uguali a quelli che già io sto utilizzando.
Io NON ho un timestamp e vorrei non crearne uno fittizio.
Se o un form con una list di questo tipo (codice ASP)
<select name="mese" id="mese" class="FormReg">
  <option value="" selected>Mese</option>
  <%for a=1 to 12%>
     <option value="<%=a%>"><%=monthname(a)%></option>
  <%next%>
</select>
Vorrei fare lo stesso in PHP senza dovermi inventare per ciclo del FOR un
timestamp fittizio per estrarre in automatico il NOME del mese.
Tutto quello che chiedevo era se anche su PHP esitesse una funzione
IDENTICA a monthname("numero del mese") dell'ASP. Che poi si possa fare in
altri modi lo so benissimo e ho già risolto.
Ma dalle vostre risposte mi pare di capire che non c'è quindi questo topic
si può anche chiudere.
Comunque grazie a tutti per le risposte qualche spunto l'ho comunque
trovato.
Certo che continua a sembrarmi strano, per la gestione delle date ci sono
funzioni potentissime e utilissime ma mancano alcune veramente basilari e
banali da implementare. E' che un sistema offrisse elaboratissime funzioni
matematiche e trigonometrice ma poi per fare una moltiplicazione tipo 4x5
si debba scrivere 4+4+4+4+4.

 banali da implementare. 
Ripeto nuovamente la mia idea: con una sola funzione ottieni tutto ciò 
che vuoi, rispetto avere n distinte funzioni. Inoltre, ottenere il nome 
del mese è l'unico caso dove *non* hai bisogno del preciso riferimento 
temporale; tanto vale avere una sola funzione che, con opportuni 
parametri, ti fornisce il giusto risultato.
	Francesco

 funzioni.
usi un timestamp fasullo, no? Non capisco dove sia il problema, sul serio.
date( "F", mktime (0,0,0,$mese,1,2000) )
Se ti sembra troppo lungo ti crei una funzione tu, del tipo
function descmonth( $month ) {
        $str = date( "F", mktime (0,0,0,$mese,1,2000) );
        return $str;
}
Mattia