Jump to content
Dragos

[PHP] Afişarea timpului în format "cât timp a trecut"

Recommended Posts

  • Moderators

Recent am avut nevoie să afişez timpul trecut de la ultimele acţiuni pe o platformă, aşa că am scris funcţia următoare:
 

<?php
function return_time($timestamp)
{
	$mins = time() - $timestamp;
	if($mins == 0)
	{
		$mins = "adineauri";
	}elseif($mins == 1)
	{
		$mins = "acum o secunda"; 
	}elseif($mins < 20)
	{
		$mins = "acum $mins secunde";
	}elseif($mins < 60)
	{
		$mins = "acum $mins de secunde";
	}elseif($mins < 120)
	{
		$mins = "acum un minut";
	}elseif($mins < 1200)
	{
		$mins = floor($mins / 60);
		$mins = "acum $mins minute";	
	}elseif($mins < 3600){
		$mins = floor($mins / 60);
		$mins = "acum $mins de minute";
	}elseif($mins < 7200){
		$mins = "acum o ora";
	}elseif($mins < 72000){
		$mins = floor($mins / 3600);
		$mins = "acum $mins ore";
	}elseif($mins < 86400){
		$mins = floor($mins / 3600);
		$mins = "acum $mins de ore";
	}else{
		$mins = date("j.m.Y",$timestamp) . " la " . date("G:i:s",$timestamp);
	}
	return $mins;
}

 

Edited by Dragos
Link to comment
Share on other sites

  • Active Members
55 minutes ago, Timelord said:

@Erase  @dancezar  Ceva de genul asta: 


<?php
function return_time($timestamp){
    $mins = time() - $timestamp;
    
	switch (true) {
      case $mins == 0:
          $mins = "adineauri";
          break;

      case $mins == 1:
          $mins = "acum o secunda"; 
          break;

      case $mins < 20:
          $mins = "acum $mins secunde"; 
          break;
        
      default:
          $mins = "niciodata";
          break;
	}
	return $mins;
}
?>

 

Genial, deci practic ai inlocuit elseif cu case si in final ai fi scris cu o linie mai mult decat cu elseif.

  • Upvote 3
Link to comment
Share on other sites

  • Moderators

Nu este ok din punct de vedere algoritmic să foloseşti switch-ul aşa, scopul lui nu este să fie folosit pentru comparaţii matematice. C++ nu permite aşa ceva, Java nu permite aşa ceva, este doar o chestie specifică PHP-ului pentru a oferi mai multă libertate.

Edited by Dragos
Link to comment
Share on other sites

Just now, Dragos said:

Nu este ok din punct de vedere algoritmic să foloseşti switch-ul aşa, scopul lui nu este să fie folosit pentru comparaţii. C++ nu permite aşa ceva, Java nu permite aşa ceva, este doar o chestie specifică PHP-ului pentru a oferi mai multă libertate.

Scuze de off-topic. Daca switch-ul nu poate fii folosit in comparari, in ce cazuri poate sa fie folosit? Sunt doar curios. Multumesc :-)

Link to comment
Share on other sites

  • Moderators
Just now, adicode said:

Scuze de off-topic. Daca switch-ul nu poate fii folosit in comparari, in ce cazuri poate sa fie folosit? Sunt doar curios. Multumesc :-)

Am corectat. M-am referit la comparaţii de tipul a > b, a >=b, etc.

 

În general, din ce am văzut, sunt folosite două variante în case: dacă variabila este identică cu o valoare sau dacă variabila se află într-un interval (ex. "case 1 ... 100").

  • Upvote 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...