Loading

  • Contents
  • Images
  • Styles
  • Scripts

PHP দিয়ে কিভাবে একটি তারিখ/সময় স্ট্রিংকে “২ ঘন্টা আগে”, “১ সপ্তাহ আগে” এর মতো মানুষের পঠনযোগ্য ফর্ম্যাটে রূপান্তর করবেন?

এই PHP ফাংশন time_ago($timestamp) একটি তারিখ/সময় স্ট্রিংকে “2 hours ago”, “1 week ago” ইত্যাদির মতো মানুষের পঠনযোগ্য ফর্ম্যাটে রূপান্তর করতে ব্যবহৃত হয়। আসুন ধাপে ধাপে এটি ভেঙে ফেলি:

ফাংশন সংজ্ঞা

function time_ago($timestamp)

একটি ইনপুট নেয়: $timestamp (একটি স্ট্রিং, যেমন ‘2025-04-06 10:00:00’)।

ধাপ ১: সময়ের পার্থক্য গণনা করুন

$current_time = time(); // Current UNIX timestamp
$time_diff = $current_time - strtotime($timestamp); // Difference in seconds
  • time() বর্তমান সময় UNIX টাইমস্ট্যাম্প ফর্ম্যাটে ফেরত দেয় (১ জানুয়ারী, ১৯৭০ থেকে সেকেন্ড)।
  • strtotime($timestamp) ইনপুট তারিখ/সময় স্ট্রিংকে UNIX টাইমস্ট্যাম্পে রূপান্তর করে।
  • তাহলে $time_diff হল সেই টাইমস্ট্যাম্পের পর কত সেকেন্ড কেটে গেছে।

ধাপ ২: সেকেন্ডকে অন্যান্য ইউনিটে রূপান্তর করুন

$seconds = $time_diff;
$minutes = round($seconds / 60);
$hours = round($seconds / 3600);
$days = round($seconds / 86400);
$weeks = round($seconds / 604800);
$months = round($seconds / 2629440);
$years = round($seconds / 31553280);

এই বিভাগটি সময়ের পার্থক্যকে এতে রূপান্তর করে:

  • মিনিট (৬০ সেকেন্ড),
  • ঘন্টা (৩৬০০ সেকেন্ড),
  • দিন (৮৬৪০০ সেকেন্ড),
  • সপ্তাহ (৭ দিন),
  • মাস (প্রায় ৩০.৪৪ দিন),
  • বছর (প্রায় ৩৬৫.২৪ দিন)।

ধাপ ৩: মানুষের পঠনযোগ্য টেক্সট ফেরত দিন

এই অংশটি সময় পরিসীমা পরীক্ষা করে এবং সঠিক স্ট্রিংটি প্রদান করে:

if ($seconds <= 60) {
  return "Just now";
} elseif ($minutes <= 60) {
  return ($minutes == 1) ? "1 minute ago" : "$minutes minutes ago";
}

তাহলে ফাংশনটি রিটার্ন করে:

  • “এখনই” যদি ৬০ সেকেন্ডের কম হয়।
  • “১ মিনিট আগে” / “X মিনিট আগে” যদি ১ ঘন্টার মধ্যে হয়।
  • “X ঘন্টা আগে”, “X দিন আগে”, “X সপ্তাহ আগে”, “X মাস আগে”, অথবা “X বছর আগে”, কতদিন আগে ছিল তার উপর নির্ভর করে।

সম্পূর্ণ কোড

function time_ago($timestamp) { 
  $current_time = time(); 
  $time_diff = $current_time - strtotime($timestamp); 
  $seconds = $time_diff; 
  $minutes = round($seconds / 60); 
  $hours = round($seconds / 3600); 
  $days = round($seconds / 86400); 
  $weeks = round($seconds / 604800); 
  $months = round($seconds / 2629440); 
  $years = round($seconds / 31553280); 
  if ($seconds <= 60) { 
    return "Just now"; 
  } elseif ($minutes <= 60) { 
    return ($minutes == 1) ? "1 minute ago" : "$minutes minutes ago"; 
  } elseif ($hours <= 24) { 
    return ($hours == 1) ? "1 hour ago" : "$hours hours ago"; 
  } elseif ($days <= 7) { 
    return ($days == 1) ? "1 day ago" : "$days days ago"; 
  } elseif ($weeks <= 4.3) { 
    return ($weeks == 1) ? "1 week ago" : "$weeks weeks ago"; 
  } elseif ($months <= 12) { 
    return ($months == 1) ? "1 month ago" : "$months months ago"; 
  } else { 
    return ($years == 1) ? "1 year ago" : "$years years ago"; 
  } 
}

উদাহরণ

যদি বর্তমান সময় 2025-04-06 12:00:00 হয় এবং আপনি পাস করেন:

time_ago("2025-04-06 11:45:00");

তারপর:

  • সময়ের পার্থক্য = ১৫ মিনিট
  • আউটপুট = “১৫ মিনিট আগে”