|
|
|
สอบถามเรื่องการ หาค่า dateDiv ที่มีรูปแบบวันเวลาต่างกัน และถ้าหากเวลาเริ่มต้นเลย เวลาที่กำหนดให้ หยุดหนับเวลา แล้วเริ่มนับตอน 8.00 |
|
|
|
|
|
|
|
สอบถามเรื่องการ หาค่า dateDiv ที่มีรูปแบบวันเวลาต่างกัน (เนื่องจากมี Filed CreateDate,CreateTime ดึงข้อมูลมาจากอีก DB มา Insert ลงใน Field)
หมายถึง
เวลาตั้งต้น เป็นการเก็บลง 2 field คือ Field1 = CreateDate (เช่น 01/09/2017), Field2 = CreateTime (เช่น 1156)
เวลาเริ่มงาน เป็นการเก็บลง 1 field คือ Field = U_DateJobStart (เช่น 2017-09-01 13:00:39)
เราจะทำการเอา (เเวลาเริ่มงาน - เวลาตั้งต้น) ยังไงครับเพื่อให้ข้อมูลออกมาที่ช่อง Response Time
และถ้าหาก เวลาตั้งต้น เกิดขึ้นหลัง 16.00 ให้เริ่มใช้เวลา 8.00 ของวันพรุ่งนี้เป็น เวลาตั้งต้นครับ
Field DB
ข้อมูลที่แสดง
Code (PHP)
<?
session_start();
include "include/connect.php";
include "include/info.php";
$id_edit=$_GET[id_edit];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>CRM</title>
<style type="text/css">
body {
background-color: #CCC;
}
.style7 {font-size: 12px; font-weight: bold;}
.style8 {font-size: 10px;}
.style9 {font-size: 10px; font-weight: bold;}
.style12 {font-size: 12px; }
.style13 {font-size: 12px; color: #FFFFFF; font-weight: bold; }
.style14 {font-size: 12px; font-weight: bold; }
a:link {
color: #000;
text-decoration: none;
}
a:visited {
color: #000;
text-decoration: none;
}
a:hover {
color: #000;
text-decoration: none;
}
a:active {
color: #000;
text-decoration: none;
}
</style>
</head>
<body>
<table border="0" cellspacing="0" cellpadding="0" width="1200" align="center">
<tr bgcolor="#FFFFFF">
<td width="1%"> </td>
<td width="250" align="center" valign="top"> </td>
<td width="80%" align="center" > <form id="form1" name="form1" method="post" action="addEdit.php">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<?
$StrSql = "Select * from service_job inner join user on user.empID = service_job.ref_empID where CallID = '$id_edit'";
$objQuery = mysql_query($StrSql) or die ("Error Query [".$StrSql."]");
$objResult = mysql_fetch_array($objQuery);
$timecreate1 = substr($objResult["CreateTime"],-2);
$timecreate2 = substr($objResult["CreateTime"],0,-2);
$timecreate = $timecreate2 .":".$timecreate1.":00";
$today = $objResult["CreateDate"];
$today = date("Y-m-d")." ".$timecreate;
$StartWork = $objResult["StartWork"];
$EndWork = $objResult["U_DateJobEnd"];
//** คำนวนเวลา **//
$strDate2 = $objResult["StartWork"];
$strDate1 = $EndWork;
$rdate = mktime(8,0,0,3,30,2011);
$ftart = mktime(8,0,0,3,30,2011);
$online=$rdate-$ftart;
$day = intval( $online / 86400 ); // จำนวนวัน
$hours = intval( ( $online % 86400 ) / 3600 ); // จำนวน ชั่วโมง
$mins = intval( ( ( $online % 86400 ) % 3600 ) / 60 ); // จำนวน นาที
$secs = intval( ( ( ( $online % 86400 ) % 3600) % 60 ) ); // จำนวน วินาที
function dateDiv($t1,$t2){ // ส่งวันที่ที่ต้องการเปรียบเทียบ ในรูปแบบ มาตรฐาน 2006-03-27 21:39:12
$t1Arr=splitTime($t1);
$t2Arr=splitTime($t2);
$Time1=mktime($t1Arr["h"], $t1Arr["m"], $t1Arr["s"], $t1Arr["M"], $t1Arr["D"], $t1Arr["Y"]);
$Time2=mktime($t2Arr["h"], $t2Arr["m"], $t2Arr["s"], $t2Arr["M"], $t2Arr["D"], $t2Arr["Y"]);
$TimeDiv=abs($Time2-$Time1);
$Time["D"]=intval($TimeDiv/86400); // จำนวนวัน
$Time["H"]=intval(($TimeDiv%86400)/3600); // จำนวน ชั่วโมง
$Time["M"]=intval((($TimeDiv%86400)%3600)/60); // จำนวน นาที
$Time["S"]=intval(((($TimeDiv%86400)%3600)%60)); // จำนวน วินาที
return $Time;
}
function splitTime($time){ // เวลาในรูปแบบ มาตรฐาน 2006-03-27 21:39:12
$timeArr["Y"]= substr($time,2,2);
$timeArr["M"]= substr($time,5,2);
$timeArr["D"]= substr($time,8,2);
$timeArr["h"]= substr($time,11,2);
$timeArr["m"]= substr($time,14,2);
$timeArr["s"]= substr($time,17,2);
return $timeArr;
}
function DateTimeDiff($strDateTime1,$strDateTime2)
{
return (strtotime($strDateTime2) - strtotime($strDateTime1))/ ( 60 * 60 ); // 1 Hour = 60*60
}
//------------------------------ ตัวอย่างการใช้งาน
$t1=$strDate1;
$t2=$strDate2;
$time=dateDiv($t1,$t2);
//print_r($time);
//print_r($time["H"]);
$D = $time["D"]*24*60;
$H = $time["H"]*60;
$M = $time["M"];
$totalDHM = $D+$H+$M;
//print_r($time["D"]);echo " วัน ";print_r($time["H"]);echo ":";print_r($time["M"]);echo":";print_r($time["S"]);echo " ชั่วโมง";
?>
<tr bgcolor="#00CCFF">
<td width="1%"> </td>
<td colspan="4" rowspan="2" align="center" class="style13">รายละเอียดงาน</td>
<td width="1%"> </td>
</tr>
<tr bgcolor="#00CCFF">
<td width="1%"> </td>
<td width="1%"> </td>
</tr>
<tr>
<td bgcolor="#66CCFF"> </td>
<td colspan="4"> </td>
<td bgcolor="#66CCFF" > </td>
</tr>
<tr>
<td bgcolor="#66CCFF" > </td>
<td width="8%"> </td>
<td width="40%"> </td>
<td width="20%" class="style14"> </td>
<td width="30%" class="style14">วันที่ : <?=$objResult["CreateDate"]." เวลา ".$timecreate; $createTimex = $objResult["CreateDate"]." ".$timecreate;?></td>
<td bgcolor="#66CCFF"> </td>
</tr>
<tr>
<td bgcolor="#66CCFF" > </td>
<td height="2" colspan="4" align="center" class="style14"><table width="60%" border="1" cellspacing="0" cellpadding="5" bordercolor="#000000">
<tr>
<td width="33%" align="center" bgcolor="#CCCCCC" class="style14">เวลาเริ่มงาน</td>
<td width="33%" align="center" bgcolor="#CCCCCC" class="style14">เวลางานเสร็จ</td>
<td align="center" bgcolor="#CCCCCC" class="style14">Response Time</td>
</tr>
<tr>
<td align="center"><?=$objResult["StartWork"]; ?></td>
<td align="center"><?=$objResult["U_DateJobEnd"]; ?></td>
<td align="center"><? print_r($time["D"]);echo " วัน ";print_r($time["H"]);echo ":";print_r($time["M"]);echo":";print_r($time["S"]);echo " ชั่วโมง";?>
</td>
</tr>
</table></td>
<td bgcolor="#66CCFF"> </td>
</tr>
<tr>
<td bgcolor="#66CCFF" > </td>
<td height="2" colspan="4" align="center" class="style14">
>
</td>
<td bgcolor="#66CCFF"> </td>
</tr>
<tr>
<td bgcolor="#66CCFF" > </td>
<td height="2" colspan="4" align="center" class="style14"><a href="servicejobs.php"> < ย้อนกลับ ></a></td>
<td bgcolor="#66CCFF"> </td>
</tr>
<tr>
<td bgcolor="#66CCFF" > </td>
<td height="2" colspan="4" align="center" class="style14"> </td>
<td bgcolor="#66CCFF"> </td>
</tr>
<tr bgcolor="#66CCFF">
<td > </td>
<td colspan="4" valign="top" align="center"> </td>
<td> </td>
</tr>
</table>
</form>
</td>
<td width="1%" > </td>
</tr>
</table>
</body>
</html>
Tag : PHP, MySQL
|
ประวัติการแก้ไข 2017-09-06 02:36:25 2017-09-06 02:38:16
|
|
|
|
|
Date :
2017-09-06 00:17:39 |
By :
karurub |
View :
1233 |
Reply :
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เก็บแบบนี้ ลำบากเลย แนะนำใช้ php จัดการเรื่อง format แล้ว diff ใน code เองดีกว่านะครับ
|
|
|
|
|
Date :
2017-09-16 10:49:15 |
By :
mangkunzo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
และถ้าหาก เวลาตั้งต้น เกิดขึ้นหลัง 16.00 ให้เริ่มใช้เวลา 8.00 ของวันพรุ่งนี้เป็น เวลาตั้งต้นครับ
และเวลาจบล่ะ จากตัวอย่าง เวลาจบก็อยู่หลัง 16 น เหมือนกัน event ไม่ครบ
และฟีลด์ไหนเป็นอะไร เอาไทยปนอังกฤษ มันเข้าใจได้หลายแบบ
createdate อาจจะเป็นเวลาตั้งต้น หรือเวลาเริ่มทำงานก็ได้
ส่วนวิธีการก็แปลง ทุกอย่างให้อยู่ในรูปแบบ datetime เดียวกัน
ตัวอย่าง
Code (SQL)
select sum( unix_imestamp(st) - unix_timestamp(cr)) as diff_in_second
from(
select
if( hour(jobstart)>16, date_add(left(jobstart,10), interval 32 hour),
if( hour(jobstart)<8, date_add(left(jobstart,10), interval 8 hour), jobstart)
) as st,
date_add(concat(right(createdate,4),'-',substring(createdate,4,2),'-',left(createdate,2)), interval createtime second) as cr
from test_date
) as tmp
ตรง interval createtime second ก็เปลี่ยนตามเป็นจริงอันนี้เดาเอา
และ อะไรลบกับอะไรก็ใส่ให้ถูกเองนะครับ ตัวอย่างเดาทั้งนั้น
แล้วใช้ php แปลง diff_in_second เป็น วัน ชม นาที วินาที
|
|
|
|
|
Date :
2017-09-16 13:21:33 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|