Jump to content
Sign in to follow this  
Dragos

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

Recommended Posts

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

Share this post


Link to post
Share on other sites

De ce nu folosesti switch ? 

 

Shit. @dancezar N-am observat ca nu sunt variabile definite.

 

Edited by Erase

Share this post


Link to post
Share on other sites
On 9/1/2017 at 6:36 PM, Erase said:

De ce nu folosesti switch ? 

Cum folosesti switch in cazul asta? Si de ce ar folosi switch daca este acelasi lucru?

Edited by dancezar

Share this post


Link to post
Share on other sites

@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;
}
?>

 

  • Like 1

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
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 :-)

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

O idee ar fi să folosești o bibliotecă JS ca să formateze data într-un mod relativ în loc de PHP.

Edited by gear

Share this post


Link to post
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.

Sign in to follow this  

×
×
  • Create New...