Skocz do zawartości
  • 0

Wyświetlanie czasu pomiędzy aktualną datą, a czasem dodania postu.


MIKEKING
 Udostępnij

Pytanie

Witam. Chciałbym opisać swój problem. Polega on na tym, że chciałbym od pobranej daty i godziny z bazy danych wyświetlić kiedy został dodany post. 

Dla przykładu kod wprowadzający:

if($today == $dateformDB){
	echo "Dodano dziś";
}else if($dateformDB < $today ){
     echo "Dodano wczoraj";                          
}else{
   echo $dateformDB;                          
}

Teraz z moich wniosków to:

Wiadomo, że jak data w bazie będzie mniejsz od dzisiejszej to nawet po kilku dniach będzie pokazywać "Dodano wczoraj".

Pytanie: W jaki sposób mogę to naprawić. Jakich warunków użyć ?

 

Pytanie poboczne: W jaki sposób mogę dodać licznik minut lub godzin. W sensie, jeśli artykuł został dodany "10 minut temu." to zamiast pokazywać "Dodano dziś"

pokazywałoby właśnie te minuty lub godziny zależnie o której godzinie spojrzymy na dany artykuł.

 

Dla pomocnych punkty reputacji.

Practice Makes PerfectJulie James


 

Odnośnik do komentarza
Udostępnij na innych stronach

4 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

Możesz zapisywać do bazy datę, zamienić ją na minuty i odjąć od obecnej i wyświetlić różnicę.

Poniżej wklejam kawałek kodu, który ostatnio pisałem.

$data = date('Y-m-d h:i:s', time());
foreach($data as $row)
{
   //to wynik w minutach
   $counter = strtotime($data) - strtotime($row['data']);

if($counter<=1800)
{
	
}

}

 

Edytowane przez GrabsonPL
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
6 minut temu, GrabsonPL napisał:

Możesz zapisywać do bazy datę, zamienić ją na minuty i odjąć od obecnej i wyświetlić różnicę.

Poniżej wklejam kawałek kodu, który ostatnio pisałem.

$data = date('Y-m-d h:i:s', time());
foreach($data as $row)
{
   //to wynik w minutach
   $counter = strtotime($data) - strtotime($row['data']);

if($counter<=1800)
{
	
}

}

 

 

Wszystko spoko. Ogólnie próbowałem napisać kod któy wygląda następująco. Działa i pewnie ma parę błędów którę mogą sprawiać, że zmniejsza wydajność strony. 

$todaydate = date("Y-m-d H:i:s");

$ago = strtotime($todaydate) - strtotime($count['post_date']);
if($ago >=126227704){
	$diff = floor($ago/31536000).' lat temu';
}elseif($ago >= 63113852){
	$diff = floor($ago/31536000).' lata temu';
}elseif($ago >= 31536000){
	$diff = floor($ago/31536000).' rok temu';
}elseif($ago >= 12960000){
	$diff = floor($ago/2592000).' miesięcy temu';
}
elseif($ago >= 5184000){
	$diff = floor($ago/2592000).' miesiące temu';
}elseif($ago >= 2592000){
	$diff = floor($ago/2592000).' miesiąc temu';
}elseif ($ago >=86400) {

if($ago >=  1209600){
$diff = floor($ago/604800).' tygodnie temu';

}elseif($ago >= 604800){
$diff = floor($ago/604800).' tydzień temu';;

}elseif($ago >= 172800){
$diff = floor($ago/86400).' dni temu';
}elseif($ago >= 86400){
$diff = floor($ago/86400).' dzień temu';
}

} elseif ($ago >= 3600) {
if($ago >=18000){
$diff = floor($ago/3600).' godzin temu';
}elseif($ago >= 7200){
$diff = floor($ago/3600).' godziny temu';
}elseif($ago >= 60){
$diff = floor($ago/3600).' godzinę temu';
}

} elseif ($ago >= 60) {
if($ago >=300){
$diff = floor($ago/60).' minut temu';
}
elseif($ago >= 120){
$diff = floor($ago/60).' minuty temu';
}elseif($ago == 60){
$diff = floor($ago/60).' minutę temu';
}

} else if($ago <= 59) {
	$diff = $ago.' sekund temu';
}
echo $diff;
?>

 

Practice Makes PerfectJulie James


 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Zamień sobie na polski i będzie hulać

 

<?php
	function formatTimestamp($datetime, $full = false) {
		$now = new DateTime;
		$ago = new DateTime($datetime);
		$diff = $now->diff($ago);

		$diff->w = floor($diff->d / 7);
		$diff->d -= $diff->w * 7;

		$string = array(
			'y' => 'year',
			'm' => 'month',
			'w' => 'week',
			'd' => 'day',
			'h' => 'hour',
			'i' => 'minute',
			's' => 'second',
		);
		foreach ($string as $k => &$v) {
			if ($diff->$k) {
				$v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
			} else {
				unset($string[$k]);
			}
		}

		if (!$full) $string = array_slice($string, 0, 1);
		return $string ? implode(', ', $string) . ' ago' : 'just now';
	}
	
	echo formatTimestamp(date('Y-m-d H:i:s', time() - 3600)); // Dla przykładu jak używać - coś sie wydarzyło godzinę temu ;d
?>

 

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Zaloguj się poniżej.

Zaloguj się
 Udostępnij

  • Ostatnio przeglądający forum Wyświetlanie czasu pomiędzy aktualną datą, a czasem dodania postu.   0 użytkowników
    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...