Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > สอบถามเรื่องการ หาค่า dateDiv ที่มีรูปแบบวันเวลาต่างกัน และถ้าหากเวลาเริ่มต้นเลย เวลาที่กำหนดให้ หยุดหนับเวลา แล้วเริ่มนับตอน 8.00



 

สอบถามเรื่องการ หาค่า dateDiv ที่มีรูปแบบวันเวลาต่างกัน และถ้าหากเวลาเริ่มต้นเลย เวลาที่กำหนดให้ หยุดหนับเวลา แล้วเริ่มนับตอน 8.00

 



Topic : 128807



โพสกระทู้ ( 316 )
บทความ ( 0 )



สถานะออฟไลน์




สอบถามเรื่องการ หาค่า 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
TDB

ข้อมูลที่แสดง
SCV

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%">&nbsp;</td>
    <td width="250" align="center" valign="top">&nbsp;</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%">&nbsp;</td>
        <td colspan="4" rowspan="2" align="center" class="style13">รายละเอียดงาน</td>
         <td width="1%">&nbsp;</td>
        </tr>
         <tr bgcolor="#00CCFF">
           <td width="1%">&nbsp;</td>
        <td width="1%">&nbsp;</td>
        </tr>
           <tr>
             <td bgcolor="#66CCFF">&nbsp;</td>
        <td colspan="4">&nbsp;</td>
         <td bgcolor="#66CCFF" >&nbsp;</td>
        </tr>
        <tr>
          <td bgcolor="#66CCFF" >&nbsp;</td>
        <td width="8%">&nbsp;</td>
        <td width="40%">&nbsp;</td>
        <td width="20%" class="style14">&nbsp;</td>
        <td width="30%" class="style14">วันที่ : <?=$objResult["CreateDate"]." เวลา ".$timecreate; $createTimex = $objResult["CreateDate"]." ".$timecreate;?></td>
         <td bgcolor="#66CCFF">&nbsp;</td>
      </tr>
        <tr>
          <td bgcolor="#66CCFF" >&nbsp;</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">&nbsp;</td>
        </tr>
      <tr>
      <td bgcolor="#66CCFF" >&nbsp;</td>
        <td height="2" colspan="4" align="center" class="style14">
>
        </td>
         <td bgcolor="#66CCFF">&nbsp;</td>
      </tr>
      <tr>
        <td bgcolor="#66CCFF" >&nbsp;</td>
        <td height="2" colspan="4" align="center" class="style14"><a href="servicejobs.php"> &lt; ย้อนกลับ &gt;</a></td>
        <td bgcolor="#66CCFF">&nbsp;</td>
      </tr>
      <tr>
      <td bgcolor="#66CCFF" >&nbsp;</td>
        <td height="2" colspan="4" align="center" class="style14">&nbsp;</td>
         <td bgcolor="#66CCFF">&nbsp;</td>
      </tr>
        <tr bgcolor="#66CCFF">
          <td >&nbsp;</td>
          <td colspan="4" valign="top" align="center">&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
      </table>
            
    </form>
    </td>
    <td width="1%" >&nbsp;</td>
  </tr>
</table>
</body>
</html>




Tag : PHP, MySQL









ประวัติการแก้ไข
2017-09-06 02:36:25
2017-09-06 02:38:16
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2017-09-06 00:17:39 By : karurub View : 1185 Reply : 3
 

 

No. 1



โพสกระทู้ ( 3,844 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์
Twitter Facebook

เก็บแบบนี้ ลำบากเลย แนะนำใช้ php จัดการเรื่อง format แล้ว diff ใน code เองดีกว่านะครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-09-16 10:49:15 By : mangkunzo
 


 

No. 2



โพสกระทู้ ( 9,556 )
บทความ ( 2 )



สถานะออฟไลน์


และถ้าหาก เวลาตั้งต้น เกิดขึ้นหลัง 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
 

 

No. 3



โพสกระทู้ ( 280 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 2 เขียนโดย : Chaidhanan เมื่อวันที่ 2017-09-16 13:21:33
รายละเอียดของการตอบ ::
... ขอบคุณมากครับ ขอนำไปลองก่อนครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-09-16 14:18:57 By : karurub
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถามเรื่องการ หาค่า dateDiv ที่มีรูปแบบวันเวลาต่างกัน และถ้าหากเวลาเริ่มต้นเลย เวลาที่กำหนดให้ หยุดหนับเวลา แล้วเริ่มนับตอน 8.00
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่