php date - "scritto 15 minuti fa..." etc..

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
Salve, come posso fare o trovare un metodo che quando scrivo una notizia e salvo la data in formato inglese e far venire fuori..
tipo:

la notizia è stata scritta 15 minuti fa..
la notizia è stata scritta 20 minuti fa..
la notizia è stata scritta 1 ora fa..
etc..

mi dite come posso fare?

grazie mille.
 
ciao
posta esattamente come formatti la data es
16-10-2013
16 10 2103
16-10-2013 11:33
ecccc...

ok, la faccio cosi:
echo "".date("Y-m-d H:i:s")."";

in inglese perché mi è più semplice da gestirla, tanto dopo ho la funzione che me la converte in italiano.

come si può fare .. c'è un termine di linguaggio che cosi cerco su google.?
 
ok, la faccio cosi:
echo "".date("Y-m-d H:i:s")."";

in inglese perché mi è più semplice da gestirla, tanto dopo ho la funzione che me la converte in italiano.

come si può fare .. c'è un termine di linguaggio che cosi cerco su google.?

Se il server supporta PHP5 è facile puoi fare in questo modo:

$first = new DateTime( '2001-01-01 11:35:20' ); //prima data da controllare
$second = new DateTime( '2001-01-02 12:00:45' ); //data attuale o data di riferimento

$diff = $first->diff( $second ); // Calcolo la differenza

echo $diff->format( '%Y-%m-%d %H:%I:%S' ); // -> 00-0-1 00:25:25

Puoi gestirti il formato di visualizzazione come preferisci con la funzione format.
Chiaramente è uno spunto dovrai adattarlo al tuo scopo

Ciao
 
si supporta il 5.4, lo messo io nel panello del servizio della mia zia..

facendo una funzione si può fare?

esempio <?php echo "".$stampa_data($row["data"])).""; ?>

perché salvo la data in datetime.

mi protesti aiutarmi..perché io con le funzioni so poco.

Per adesso ho fatto copia/incolla tramite codice che trovo su internet e l'aiuto vostro.

ti ringrazio molto e buona giornata.
 
si si può fare ma le funzioni e le viste separale sempre...
Almeno io faccio così

$valorefunzione=$stampa_data($row["data"]);

echo $valorefunzione;

così in debug so se ho sbagliato sintassi o se la funzione non funziona (gioco di parole) :) e li separo.

ciao
 
ciao
prova questa
PHP:
<?php
function da_quanto($data){
	$data_ora=time();//data attuale in timestamp
	//formato data Y-m-d H:i:s
	$d=explode(" ", $data);//$d[0]=>"Y-m-d", $d[1]=>"H:i:s"
	$d_1=explode("-",$d[0]);//$d_1[0]=>"Y", $d_1[1]=>"m",$d_1[2]=>"d"
	$d_2=explode(":",$d[1]);//$d_2[0]=>"H", $d_2[1]=>"i",$d_2[2]=>"s"
	$data_news=mktime((int)$d_2[0],(int)$d_2[1],(int)$d_2[2],(int)$d_1[1],(int)$d_1[2],(int)$d_1[0]);//data news in timestamp
	$delta=$data_ora-$data_news;//intervallo
	if($delta < 60){//meno di un minuto
		return "adesso";
	}
	//calcolo il delta in giorni
	$gg=$delta/(24*3600);
	if((int)$gg > 0){
		return " ".(int)$gg." giorni ";//ritorno quanti giorni
	}
	//calcolo il delta in ore
	$ore=$delta/3600;
	if((int)$ore > 0){
		return  " ".(int)$ore." ore ";//o ritorno quante ore
	}
	//riporto i minuti
	return " ".(int)($delta/60)." min ";//o ritorno i minuti
}
//***TEST******
//$data_news="2013-10-16 09:50:33";
//$data_news="2013-10-16 13:50:33";
$data_news="2013-10-14 13:50:33";
echo "news del $data_news<br />";
echo "news pubblicata".da_quanto($data_news)." fa";
?>
 
ciao
prova questa
PHP:
<?php
function da_quanto($data){
	$data_ora=time();//data attuale in timestamp
	//formato data Y-m-d H:i:s
	$d=explode(" ", $data);//$d[0]=>"Y-m-d", $d[1]=>"H:i:s"
	$d_1=explode("-",$d[0]);//$d_1[0]=>"Y", $d_1[1]=>"m",$d_1[2]=>"d"
	$d_2=explode(":",$d[1]);//$d_2[0]=>"H", $d_2[1]=>"i",$d_2[2]=>"s"
	$data_news=mktime((int)$d_2[0],(int)$d_2[1],(int)$d_2[2],(int)$d_1[1],(int)$d_1[2],(int)$d_1[0]);//data news in timestamp
	$delta=$data_ora-$data_news;//intervallo
	if($delta < 60){//meno di un minuto
		return "adesso";
	}
	//calcolo il delta in giorni
	$gg=$delta/(24*3600);
	if((int)$gg > 0){
		return " ".(int)$gg." giorni ";//ritorno quanti giorni
	}
	//calcolo il delta in ore
	$ore=$delta/3600;
	if((int)$ore > 0){
		return  " ".(int)$ore." ore ";//o ritorno quante ore
	}
	//riporto i minuti
	return " ".(int)($delta/60)." min ";//o ritorno i minuti
}
//***TEST******
//$data_news="2013-10-16 09:50:33";
//$data_news="2013-10-16 13:50:33";
$data_news="2013-10-14 13:50:33";
echo "news del $data_news<br />";
echo "news pubblicata".da_quanto($data_news)." fa";
?>
ora provo, scusa ma ero via.
 
ciao borgo..

ho provato

ho una notizia che è stata scritta il : 2013-10-14 21:49:07

ma la funzione dice che è stata scritta 1 giorni.

come mai?.

grazie mille e buona serata.
 
ciao
semplice, perchè se (prendo l'ora in questo momento che mi da il pc) la data è
2013-10-16 17:16:00
tra questa e la
2013-10-14 21:49:07
non sono passati ancora due giorni ma uno e un po', ti riporterà due giorni quando la data attuale diventerà
2013-10-16 49:07:01
cioè almeno un secondo in più
modificando la funzione potresti ottenere es. 1 gg 45 min
 
ciao
semplice, perchè se (prendo l'ora in questo momento che mi da il pc) la data è
2013-10-16 17:16:00
tra questa e la
2013-10-14 21:49:07
non sono passati ancora due giorni ma uno e un po', ti riporterà due giorni quando la data attuale diventerà
2013-10-16 49:07:01
cioè almeno un secondo in più
modificando la funzione potresti ottenere es. 1 gg 45 min

come faccio ad sistemarla?

mi protesti aiutarmi.?

grazie mille.
 

Discussioni simili