Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz
  • 0

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


MIKEKING

Pytanie

Opublikowano

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


 

4 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

Opublikowano

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)
{
	
}

}

 

Opublikowano
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


 

Opublikowano

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
?>

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...