[PHP] เทียบวันที่ และเวลา เพื่อแสดงว่า ผ่านมาเท่าไหร่แล้ว หรือ เหลืออีกเท่าไหร่ถึงจะถึง


แบบถ้าเอาเวลาตั้งต้น กับเวลาที่ต้องการ มาลบกันแล้วหาว่าผ่านมานานเท่าไหร่แล้ว กี่วัน กี่นาที หรือเมื่อไม่กี่นาทีที่ผ่าน

function time_elapsed_string($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' => 'ปี',
        'm' => 'เดือน',
        // 'w' => 'สัปดาห์',
        'd' => 'วัน',
        'h' => 'ชั่วโมง',
        'i' => 'นาที',
        's' => 'วินาที',
    );
    foreach ($string as $k => &$v) {
        if ($diff->$k) {
            $v = $diff->$k . ' ' . $v;
        } else {
            unset($string[$k]);
        }
    }

    // การแสดงผลปกติจะแสดงแค่ 2 ชิ้นแรก เช่น 1 ปี 1 เดือน จากทั้งหมด
    // หากต้องการแสดงทั้งหมด ให้ส่งพารามิเตอร์ $full = true มาด้วย
    // ผลลัพธ์จะได้เป็น เหลืออีก 1 ปี 1 เดือน 3 วัน 2 ชั่วโมง 1 นาที 10 วินาที
    if (!$full) $string = array_slice($string, 0, 2);

    // ทำการเช็ค 2 แบบ ถ้าเวลาปัจจุบันน้อยกว่าเวลาที่ต้องการเทียบจะบอกว่า เหลืออีกเท่าไหร่
    if ($now <= $ago) {
        return  $string ? 'เหลืออีก ' . implode(' ', $string) : 'ตอนนี้';
    }

    // ถ้าเวลาปัจจุบันมากกว่าเวลาที่ต้องการเทียบ จะแสดงผลว่า ไปแล้วเท่าไหร่
    return $string ? 'ไปแล้ว ' . implode(' ', $string) : 'ตอนนี้';
}

// วิธีใช้
$time_you_want = new DateTime('2022-12-12');
echo time_elapsed_string($time_you_want);

ผลลัพธ์

ก็จะแสดงผลออกมาแบบนี้ เหลืออีก 1 เดือน 26 วัน จริงๆ จะแสดงผลเป็น 1 เดือน 3 สัปดาห์ 5 วัน ก็ได้ แต่เคนรู้สึกว่ามันดูไม่ค่อยเป็นภาษาคนที่อ่านง่ายเท่าไหร่

คำค้นหาภาษาอังกฤษ

Convert datetime show ago, datetime ago, php datetime diff ago, time ago

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
Navigate

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

    ประเภทของคุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้

  • คุกกี้เพื่อการวิเคราะห์

    คุกกี้นี้เป็นการเก็บข้อมูลสาธารณะสำหรับการวิเคราะห์ และเก็บสถิติการใช้งานภายในเว็บไซต์นี้เท่านั้น ไม่ได้เก็บข้อมูลส่วนตัวที่ไม่เป็นสาธารณะใดๆ ของผู้ใช้งาน

บันทึกการตั้งค่า
0
Would love your thoughts, please comment.x
()
x