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 > ระบบ แสดง ระยะเวลา ที่ได้จาก วันที-เวลาปัจจุบัน ลบ ด้วย วันที่-เวลา ที่เราบันทึกไว้ แบบ Real-time



 

ระบบ แสดง ระยะเวลา ที่ได้จาก วันที-เวลาปัจจุบัน ลบ ด้วย วันที่-เวลา ที่เราบันทึกไว้ แบบ Real-time

 



Topic : 115779



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



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




ต้องการให้ ระบบ แสดง ระยะเวลา ที่ได้จาก วันที-เวลาปัจจุบัน ลบ ด้วย วันที่-เวลา ที่เราบันทึกไว้ แบบ Real-time

time


โดยผมใช้ Code แสดงเวลาปัจจุบัน เป็น ดังนี้

Code (PHP)
<?php
date_default_timezone_set('Asia/Bangkok');
    $current_server_time = date("Y")."-".date("m")."-".date("d").
	" ".date("H:i:s");
?>
 
<script language="JavaScript1.2">
<!--
function server_date(now_time) {
    current_time1 = new Date(now_time);
    current_time2 = current_time1.getTime() + 1000;
    current_time = new Date(current_time2);
 
    server_time.innerHTML = current_time.getFullYear() + "-"
	 + (current_time.getMonth()+1) + "-"
	  + current_time.getDate() + " "
	   + current_time.getHours() + ":"
	    + current_time.getMinutes() + ":"
		 +current_time.getSeconds();
    setTimeout("server_date(current_time.getTime())",1000);
}
 
setTimeout("server_date('<?=$current_server_time?>')",1000);
//-->
</script>

<div id="server_time">&nbsp;</div>


และใช้ Code แสดงระยะเวลา ที่หักลบ ได้ ดังนี้

Code (PHP)
function DateTimeDiff($strDateTime1,$strDateTime2)
{
return (strtotime($strDateTime2) - strtotime($strDateTime1))
/  60; // 1 min =  60
}
 $dtvar = DateTimeDiff($data['tminf'],"2015-4-11 20:00");
	 echo floor($dtvar/1440)." วัน  ".floor(($dtvar%1440)/60)." ชั่วโมง  "
	 .(($dtvar%1440)%60)." นาที";
}


ปัญหาก็คือ ผมไม่สามารถ นำเอา วันที่-เวลาปัจจุบัน มาหักลบกับ วันที่-เวลา รับแจ้งได้อะครับ เพื่อนๆๆ ช่วยแนะนำหน่อยนะครับ

(ตามภาพ ใน Code ผมสมมุติ เวลา 2015-4-11 20:00 ให้มันนะครับ ขอบคุณครับ



Tag : PHP, HTML/CSS, JavaScript, Ajax, jQuery









ประวัติการแก้ไข
2015-04-11 19:33:33
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-04-11 19:28:44 By : jojoecake View : 5712 Reply : 11
 

 

No. 1



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



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


Code (PHP)
$unixtime = strtotime( $row['alertDate'] );
echo "<tr><td class='td_time'  id='r_$row[id]' data-time='$unixtime' >$row[alertDate]</td><td ..........></tr>";




Code (JavaScript)
<script>

//setTimeout("server_date('<?=$current_server_time?>')",1000);
setInterval( chk_time(), 1000 * 10); // 10 seconds
function chk_time(){
    var td = document.getElementByClassName('td_time');
    var ln=td.length;
    var cur_date=new Date();
    for( var i=0; i<ln; i++){
        var alertDate=new Date( td.item(i).getAttribute('data-time') );
        var timeDiff = Math.abs(cur_date.getTime() - alertDate.getTime());
        var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
        var diffHour = ?;
        var diffMin = ?;
        td.item(i).parent.childnodes[2].innerHTML=diffDay +' วัน ' + diffHour + ' ชั่วโมง' ........
        // ที่เหลือก็ลอง คิดดูนะครับ จะหา ชั่วโมง นาที ยังไง
    }
} 
</script>


และถ้าเป็น 0 ชั่วโมง จะให้แสดงแบบไหน






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-11 20:06:08 By : Chaidhanan
 


 

No. 2



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



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


ขอบคุณพี่ Chaidhanan มากนะครับ

รบกวนพี่ๆทุกท่าน ขอถามเพิ่มหน่อยครับ การกำหนด id='r_$row[id]' และ $row[alertDate] ให้กำหนดอะไรหรอครับ มิอใหม่ และ ไม่เคยใช้ td class อะครับ

อีกอย่าง Code ที่พี่ให้มา ดึงเวลา แรก จาก Server ใช้ไหมครับ


ขอบคุณมากนะครับ


ประวัติการแก้ไข
2015-04-11 21:24:09
2015-04-11 22:30:08
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-11 21:21:57 By : jojoecake
 

 

No. 3



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



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


แฮะๆ ผมนึกว่า พอเข้าใจคำสั่ง php/mysql ในระดับหนึ่งแล้ว เพราะเห็น ตัดแค่ บางส่วนของโปรแกรมมา
เลยทำตัวอย่างให้แค่นั้นนะครับ

ลองดูตัวอย่างการคิวรี่เพิ่มเติมครับ
ฟีลด์ "รับแจ้ง" และ "สถานะ" ก็แก้ให้ถูกต้องเองนะครับ ผมไม่รู้ชื่่อมัน
ชื่อ ตารางด้วยครับ "table"

Code (PHP)
<table>
<?php
$sql = "select no, `รับแจ้ง` as alertDate, `สถานะ` as status from table";
$rs=mysql_query( $sql ) or die ( mysql_error()."<br>[[$sql]]");
while( $row=mysql_fetch_assoc($rs)){
     $date = new DateTime($row['alertDate'], new DateTimeZone('Asia/Bangkok')); // set ตามจริงตาม การเก็บข้อมูลใน database
     $timezone=$date->format('Y-m-d H:i:sP');
     //$unixtime = strtotime( $row['alertDate'] );
     echo "
<tr>
     <td class='td_time'  id='r_$row[no]' data-time='$timezone' >$timezone</td>
    <td></td>
    <td>$row[status]</td>
</tr>";
}
?>
</table>


สำหรับ class='td_time' ของ HTML
td_time คือชื่อที่ไว้ อ้างอิง จากคำสั่ง document.getElementsByClassName('td_time');
ถ้าไม่มีชื่อคลาส เราก็ต้องเอาชื่อ id ไม่มีชื่อ id เราก็ต้องใช้ชื่อ tag ต้องหามาสักอันให้เราอ้างอิงได้ครับ

สำหรับ เวลา การทำงาน จาก function chk_time() ใน javascript
ใช้เวลาจากเครื่อง client ครับ

การทำแบบ realtime โดยใช้ javascript เวลาจะเป็นของฝั่ง client
เวลาที่ส่งให้ client ก็ต้อง แปลงมาให้ตรง กับ client ด้วยนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-12 09:51:12 By : Chaidhanan
 


 

No. 4



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



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


พี่่ครับ แบบนี้ถ้า Client แก้เวลา เครื่องของเขา ระยะเวลาดำเนินการ มันก็เปลี่ยนไปใช่ไหม >> มันมีผลต่อ ค่าปรับนะครับ

ถ้าสมุมติว่า เราดึงเวลาจาก server ตอนแรก แล้วให้ java บวก เพิ่มไปเรื่อยๆ แบบ นาฬิกา


เมื่อ จะดู ระยะเวลาดำเนินการ ก็ให้ นำ เวลาแบบ นาฬิกา มาหักลบ กับเวลาแจ้ง แบบนี้ จะปลอดภัยกว่าไหมอะครับ

คือ เวลาที่ Client ไม่มีผล และ ก็ ไม่ทำให้ Server ทำงานหนักเกินไปด้วย

ปม พึ่งหัดเขียนได้ 1 เดือนเองครับ ^^

แฮะๆ ขอบคุณมากนะครับ รบกวนด้วยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-12 10:25:04 By : jojoecake
 


 

No. 5



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



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


โปรแกรมที่ผมทำเป็นตัวอยา่งไว้ เป็นการ ทำตามความคิด คห 4 เลยล่ะครับ
คิวรี่เวลาจากฝั่ง server ครั้งเดียวครับ

ส่่วนเวลาจะเสียค่าปรับจริง เราต้องใช้ เวลาจาก database ในการคำนวณครับ

ถ้า user จะโกงหน้าจอ อยากทำอะไรฝั่ง client ก็ทำไป
แต่เวลา เสียเงิน เราเอาแค่ id ไปคิวรี่จาก database จริงครับ
ไม่ต้องให้ client ส่งเวลา หรือจำนวนเงิน ไป ส่วนนั้นต้อง คำนวณจาก server ครับ
ใช้เวลาของ server ในการคำนวณ ค่าปรับ ไม่ใช้เวลา ของ client ในการคำนวณครับ

ใช้ javascript ฝั่ง client Alert แค่แจ้งเตือนครับ
โดยไม่ต้องส่ง request ไปให้ sever ทำงานหนัก แค่แจ้งเตือนโดยใช่เหตุ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-12 11:22:49 By : Chaidhanan
 


 

No. 6



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



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


รบกวน ดูให้อีกรอบได้ไหมครับ ไม่ได้อะครับ มันยังไม่ขึ้นคำว่า ทดสอบ ในตารางเลยอะครับ ว่างเปล่า

ขอบคุณครับ

Code (JavaScript)
<script>
setInterval( chk_time(), 1000 * 10); // 10 seconds
function chk_time(){
    var td = document.getElementByClassName('td_time');
    var ln=td.length;
    var cur_date=new Date();
    for( var i=0; i<ln; i++){
        var alertDate=new Date( td.item(i).getAttribute('data-time') );
        var timeDiff = Math.abs(cur_date.getTime() - alertDate.getTime());
        var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
        td.item(i).parent.childnodes[2].innerHTML="ทดสอบ";
    }
} 
</script>


Code (PHP)
$sql = "SELECT * FROM maintb ORDER BY no DESC";
$r = mysqli_query($link,$sql);
if (!$r) {echo mysqli_error($link);}
else if (mysqli_num_rows($r)==0) {echo "ไม่มีข้อมูลในตาราง maintb";}
else {
$var = 0;
while($data = mysqli_fetch_array($r)) {
$var = $var+1;
$date = new DateTime($data['tminf'], new DateTimeZone('Asia/Bangkok'));
$timezone=$date->format('Y-m-d H:i:s');
?>
<tr><td align="center"><?php echo $var; ?></td>
<?php echo  "<td class='td_time' data-time='$timezone' >$timezone</td>
<td></td>
<td>$data['sts']</td></tr>"; ?>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-12 13:00:41 By : jojoecake
 


 

No. 7



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



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


บันทัดที่ 4 ่javascript ขอโทษครับ พิมพ์ ตก s
var td = document.getElementsByClassName('td_time');
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-12 17:23:00 By : Chaidhanan
 


 

No. 8



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



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


รบกวนพี่อีกรอบ นะครับ จนปัญหา จริงๆๆๆ นี่ Code เต็มๆๆๆ แบบไม่ตัด นะครับ รบกวนด้วยนะครับ

ผมไม่รู้ java ด้วยอะ คือ .parent.childnodes ใช้ยังไง

Code (JavaScript)

<script language="javascript">
setInterval( chk_time(), 1000 * 10); // 10 seconds
function chk_time(){
   	var td = document.getElementsByClassName('td_time');
    var ln=td.length;
    var cur_date=new Date();
    for( var i=0; i<ln; i++){
        var alertDate=new Date( td.item(i).getAttribute('data-time') );
        var timeDiff = Math.abs(cur_date.getTime() - alertDate.getTime());
        var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
        td.item(i).parent.childnodes[2].innerHTML="ทดสอบ";
    }
} 
</script>


Code (PHP)
<form>
<table border="1" cellspacing="0" cellpadding="5" bordercolorlight="#CCCCCC" bordercolordark="#FFFFFF" id="tbExp">
<tr>
<td align="center">No.</td>
<td align="center">วันที่-เวลา รับแจ้ง</td>
<td align="center">Service No.</td>
<td align="center">ผลกระทบต่ออุปกรณ์</td>
<td align="center">ระยะเวลาดำเนินการ</td>
<td align="center">สถานะ</td>
<td align="center">เส้นทาง</td>
<td align="center">ผลกระทบต่อลูกค้า</td></tr>

<?php
$sql = "SELECT * FROM maintb ORDER BY no DESC";
$r = mysqli_query($link,$sql);
if (!$r) {echo mysqli_error($link);}
else if (mysqli_num_rows($r)==0) {echo "ไม่มีข้อมูลในตาราง maintb";}
else {
$var = 0;
while($data = mysqli_fetch_array($r)) {
$var = $var+1;
$date = new DateTime($data['tminf'], new DateTimeZone('Asia/Bangkok'));
$timezone=$date->format('Y-m-d H:i:s');
?>
<tr><td align="center"><?php echo $var; ?></td>
	<?php echo "<td class='td_time' data-time='$timezone'>$timezone</td>"; ?>
    <td align="center"><?php echo $data['srvno']; ?></td>
	<td align="left"><?php echo $data['pdt']; ?></td>
    <td align="left">แสดงระยะเวลาในนี้อะคับพี่</td>
    <td align="center"><?php echo $data['sts']; ?></td>
	<td align="center">-</td>
	<td align="center"><?php echo $data['ctm']; ?></td>
</tr>	
<?php
}
echo "</table>";
}
mysqli_close($link);
?>
</form>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-12 18:28:29 By : jojoecake
 


 

No. 9

Guest


น่าจะช่วยตัวเองบ้าง ด้วยการค้นหาใน google ก็จะเจอ
ลุงแก ตอบได้หลักการและวิธีการ แต่คำสั่่งเพี้ยนบ่อยๆ ไม่รู้ ตั้งใจหรือเปล่า ฮ่าๆ

parent ต้องใช้ parentNode นะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-12 19:09:02 By : มั่วๆ ไป
 


 

No. 10



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



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


ตอบความคิดเห็นที่ : 9 เขียนโดย : มั่วๆ ไป เมื่อวันที่ 2015-04-12 19:09:02
รายละเอียดของการตอบ ::
แฮะๆ ขอบคุณครับ มันก็มีเบลอกันบ้างอะครับ พิมพ์ผิดพิมพ์ถูก ตามสภาพแวดล้อม

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-12 20:31:01 By : Chaidhanan
 


 

No. 11



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



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


ได้แล้วครับ ขอบคุณพี่ Chaidhanan และทุกท่านๆ มากนะครับ

ผมจะเก็บไว้เป็นตัวอย่าง และบทเรียนสอนตัวเองต่อๆไปครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-12 21:00:55 By : jojoecake
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ระบบ แสดง ระยะเวลา ที่ได้จาก วันที-เวลาปัจจุบัน ลบ ด้วย วันที่-เวลา ที่เราบันทึกไว้ แบบ Real-time
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 03
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 อัตราราคา คลิกที่นี่