PHP [DATE TIME] ประยุกต์ การนำเวลา ที่เป็น H:i:s บวกกัน

By -

วันนี้มีเพื่อนๆคนนึงใน ที่แวะเข้ามาเยี่ยมชมเว็บไซต์ แล้วก็ถามผมใน facebook จะว่า วันนี้ก็ไม่ถูก ที่จริง โพสถามตั้งแต่มะวาน ผมเพิ่งได้เข้ามาอ่านในวันนี้นี่เอง เอาเป็นว่าเข้าเรื่องกันเลยดีกว่า โจทย์ก็มีอยู่ว่า ..

ผมอยากบวกเวลาที่เป็น
php คือมีตัวแปล เวลาที่วนลูปจากฐานข้อมูลมา 3 ตัว แบบ
date("H:i:s")
วันที่1+ 2+3
เช่น 01:30:00+01:30:00+00:30:00
เท่ากับ 3 ชั่วโมง 30 นาที 0 วินที ต้องเขียนโค้ดยังไงหรอคับ

ผมก็เลยขอยกตัวอย่าง นะครับ สมมุตว่า ผมได้ข้อมูลเวลาที่เป็นแบบ H:i:s มี 3 ตัว

//สร้างตัวแปร arrayขึ้นมา

$data = array(“01:30:00”, “01:30:00”, “02:10:20”);

// set $date  เวลา ให้เป็น เวลาว่างๆ
$date = new DateTime(‘0000-00-00 00:00:00’);

// สร้างตัวแปร h มาเก็บชั่วโมง m มาเก็บ นาที s มาเก็บ วินาที โดยตั้งค่าให้ตัวแปรแต่ละตัวมีค่า เท่ากับ 0
$h = 0;
$m = 0;
$s = 0;

// จากนั้น loop เอาค่าแต่ละตัว มา + กันเพื่อเก็บไว้ในตัวแปร ทั้ง 3 ตัว
foreach($data as $time){ // ตัวแปร $data = $time

// แยก ตัวแปร $data ( หรือ $time ) ออกมา ด้วย ฟังชั่น explode ก็จะได้ข้อมูล array แยก ตาม ชั่วโมง นาที และวินาที
$a = explode(“:”,$time);

// แล้ว ก็เอาค่า มา + กัน ใน loop แต่ละรอบ โดยเก็บไว้ในตัวแประ $h $m $s
$h = $h+$a[0];
$m = $m+$a[1];
$s = $s+$a[2];
}

พอ หลุดจาก loop เราก็จะได้ ค่า ของ ชั่วโมง นาที แล้วก็ วินาทีทั้งหมด

แล้วก็เอา ตัวแปร $date  ที่เรา set เวลา ว่างๆ ข้างบน มาเอาค่าที่เรา sum ได้ มาใส่
$date->modify(“$h hour $m min $s sec”);

ผลรับที่ได้

echo $date->format(‘H ชั่วโมง i นาที s วินาที’);

ผมก็เขียนโค้ดได้ดังนี้

<?php
$data = array("01:30:00", "01:30:00", "02:10:20");
$date = new DateTime('0000-00-00 00:00:00');
$h = 0;
$m = 0;
$s = 0;
foreach($data as $time){
	$a = explode(":",$time);	
	$h = $h+$a[0];
	$m = $m+$a[1];
	$s = $s+$a[2];
}
$date->modify("$h hour $m min $s sec");
echo $date->format('H ชั่วโมง i นาที s วินาที');

?>

ผลลัพย์

mitsumasa