php - data in italiano senza il tempo

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
Salve ho questa funzione che mi scrive la data in italiano presa da un campo del database in formato datetime (in inglese),
vorrei sapere come togliere il tempo e lasciare solo la data esempio: 21/10/2013.

ecco il codie:
PHP:
function data_no_hour($data) 
{ 
  // Creo una array dividendo la data YYYY-MM-DD sulla base del trattino 
  $array = explode("-", $data);  


  // Riorganizzo gli elementi in stile DD/MM/YYYY
  $data_it = "".$array[1]."/".$array[2]."/".$array[0]."";

  // Restituisco il valore della data in formato italiano 
  return $data_it;  
}

idee??


grazie mille e buona serata.
 
ciao, vorrei mettere questa:
select STR_TO_DATE(’03/10/2005′,’%d/%m/%Y’);

in questa query come faccio a metterla:

PHP:
SELECT utenti._user as _user , news_categorie.titolo as _cat , news.* FROM utenti 
       INNER JOIN news 
          ON utenti.id = news._userid INNER JOIN news_categorie
          ON news_categorie.id = news._catid WHERE news.active=1  and news_categorie.active=1 and news._del=1 ORDER BY data DESC

grazie mille e ti ringrazio molto e buona serata.
 
ok, quasi riuscito ma mi scrive i mesi in inglese come faccio metterli in italiano:

DATE_FORMAT(news.data,'%d %M %y') as 'data_formattata'

forse set local time?

giusto e dove posso trovare documentazione?
grazie mille.
 
SET_LOCALE ma poi dipende anche dalla versione di PHP e da come è strutturato il server.
La documentazione la trovi sempre online e sempre sul manuale del PHP online, specie nelle risposte degli utenti che trovi a fondo pagina.
Io comunque preferisco sempre fare un wrapper con un array coi nomi dei mesi a cui passare il mese come valore numerico.
 
ciao, vorrei mettere questa:
select STR_TO_DATE(’03/10/2005′,’%d/%m/%Y’);

in questa query come faccio a metterla:

PHP:
SELECT utenti._user as _user , news_categorie.titolo as _cat , news.* FROM utenti 
       INNER JOIN news 
          ON utenti.id = news._userid INNER JOIN news_categorie
          ON news_categorie.id = news._catid WHERE news.active=1  and news_categorie.active=1 and news._del=1 ORDER BY data DESC

grazie mille e ti ringrazio molto e buona serata.
Immagino che la vuoi inserire come ORDER BY data, sbaglio ma non vedo altri punti nella tua query. Se è così pensa a come carichi la data nel database, guarda la query di caricamento (INSERT o UPDATE) e vedi come è caricata lì, probabilmente ti basta copiare lo stesso metodo.
Io attualmente ho un campo data e vi carico una stringa presa con PHP che vi carica la data odierna
PHP:
$data = substr(date('c'), 0, 10)
.
L'attributo c mi da la data in formato ISO8601 e la substr me la taglia a 10 caratteri cioè appena prima che inizi l'ora che nemmeno a me interessa.
La query me la carica perfettamente nel campo data ovvero semplificando molto "INSERT INTO tabella (campo1, campo2, data, ...) VALUES (valore1, valore2, :data)", prova a vedere se anche a te viene caricata in un modo simile.
Poi per formattare la data da ISO8601 a umana uso una funzione di wrapper
PHP:
        function data($dataISO) {
		$mesi = array('', 'January','February','March','April','May','June','July','August','September','October','November','December');
		$giorno = substr($dataISO, -2);
		$mese = substr($dataISO, 5, 2);
		$anno = substr($dataISO, 0, 4);
	return "{$mesi[$mese]} $giorno, $anno";
	}	//	data()
nota solo che l'array non comincia con gennaio, ma con una chiave vuota.
Ah sì, questo fa l'esatto contrario di quello che vuoi fare tu, ma ti basta tradurre i mesi in italiano :D
 
ok , ti ringrazio e provo domani e poi ti faccio sapere..

per il campo data lo recupero via php con $row["data"],

ma quello che non vedi è inserito qui:

, news.* FROM utenti

e l'asterisco della tabella news che mi permette di prendere gli altri dati che non ho inserito nella query.

ti ringrazio molto domani vedo come fare.

buona serata.
 
ciao per domani mattina .. nel frattempo ho trovato un codice che mi trasforma anche il giorno della settimana e il mese.
te lo posto:
PHP:
<?php
$arr_set=array("Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato");

$arr_mesi=array("Gennaio","Febbraio","Marco","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre");

$settimana = $arr_set[date("w")];
$giorno = date("d");
$mese = $arr_mesi[date("n")-1];
$anno = date("Y");

$data = "".$settimana."&nbsp;".$giorno."&nbsp;".$mese."&nbsp;".$anno."";    

 
echo "Oggi è: ".$data."&nbsp;\n";   

?>

come faccio farlo che prende la data del campo data.?

grazie mille a domani.

buona notte.
 
ciao
@luigi777
guarda che, da quello che ho capito, lo script che hai postato ti trasforma la data "odierna" in uno stile italiano, non una data estratta da una tabella.
per trasformare una data estratta da una tabella devi usare il metodo suggerito da marcograzia cioè una funzione che (gioco di parele) in funzione di come è formattata ti traduca la data in italiano
 

Discussioni simili