PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum

ปัญหารการนับถอยหลัง ของหน้าเว็บเวลาไม่เท่ากันครับ

ปัญหารการนับถอยหลัง ของหน้าเว็บเวลาไม่เท่ากันครับ

 ตามที่ผมได้ศึกษาวิธีการนับถอยหลังของอาจารย์ 

http://www.ninenik.com/สร้าง_countdown_นับเวลา_ถอยหลัง_ด้วย_javascript-274.html

ผลที่ได้คือหน้าเว็บ 2 หน้าเวลาไม่เท่ากันครับ พอจะมีวิธีไหนที่ทำให้มันนับพร้อมกัน ไม่ว่าจะเปิดที่เครื่องไหนในโลก ได้ไหมครับ 

 

ขอบคุณครับ



โดย:  Porchn IP: 115.87.215.xxx วันที่: 05-06-2010 เวลา: 09:43:53

คำแนะนำ และการใช้งาน

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


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ


  • ( หรือ สามารถทำการ สมัครสมาชิก และล็อกอิน ด้วย ปุ่ม Log in with Facebook ด้านล่าง )
 ความคิดเห็นที่ 3

 ขอบคุณครับ ขอบคุณทั้ง 2 ท่านนะครับ



โดย:  Porchn IP: 115.87.215.xxx วันที่: 05-06-2010 เวลา: 23:06:09
 ความคิดเห็นที่ 2

ถ้าเป็นเครื่องเดียวกัน ถ้าเปิดหน้าเดียวกัน พร้อมกัน เวลาน่าจะไม่ต่างกัน

แต่ถ้าเป็นคนละเครื่อง ถ้าเปิดหน้าเดียวกัน พร้อมกัน โอกาสที่เวลาจะไม่ตรงกัน เป็นไปได้ รวมทั้ง เปิดจากเครื่องไหนๆ ในโลกโอกาส ที่เวลาไม่ตรงกันก็เป็นไปได้เหมือนกัน

สาเหตุน่าจะมาจาก การนับเวลาถอยหลัง จำเป็นต้องทำการลบ ค่าเวลาของสอง ช่วงเวลา เพื่อหาผลต่าง มาคำนวณ
แต่เครื่องแต่ละเครื่องมีการตั้งค่าเวลาไม่เท่ากัน หรือไม่ก็อยู่คนละประเทศ เวลาที่เครื่องจึงต่างกันตามโซนของเวลา

อย่างไรก็ตามถ้าต้องการแก้ปัญหาให้เวลา เท่ากัน จำเป็นต้องดึงเวลาจากฝั่ง server ซึ่งจะได้เวลาตั้งต้นเดียวกัน แต่การจะดึงเวลาดึงกล่าวจาก server ต้องใช้ ajax

สร้างไฟล์ servertime.php ดังนี้
 

<?php
if($_GET['gTime']){
header("Content-type:text/html; charset=UTF-8");           
header("Cache-Control: no-store, no-cache, must-revalidate");          
header("Cache-Control: post-check=0, pre-check=0", false); 
echo date("n/d/Y H:i:s");	
exit;
}
?>

HTML Code ตัวอย่าง
 

<div id="showRemain"></div>

Javascript Code ตัวอย่าง

<script type="text/javascript" src="js/jquery-1.4.1.min.js"></script>
<script type="text/javascript">
var timeServer=null;
$(function(){
	 timeServer=$.ajax({
			url:"servertime.php",
			data:"gTime=1",
			async:false
	}).responseText;
});

function countDown(){
	var timeA = new Date(timeServer); // วันเวลาปัจจุบัน	
	var timeB = new Date("10/31/2010 09:09:09"); // วันเวลาสิ้นสุด รูปแบบ เดือน/วัน/ปี ชั่วโมง:นาที:วินาที
	var timeDifference = timeB-timeA;
	if(timeDifference>=0){
		timeDifference=timeDifference/1000;
		timeDifference=Math.floor(timeDifference);
		var wan=Math.floor(timeDifference/86400);
		var l_wan=timeDifference%86400;
		var hour=Math.floor(l_wan/3600);
		var l_hour=l_wan%3600;
		var minute=Math.floor(l_hour/60);
		var second=l_hour%60;
		var showPart=document.getElementById('showRemain');
		showPart.innerHTML="เหลือเวลา "+wan+" วัน "+hour+" ชั่วโมง "
		+minute+" นาที "+second+" วินาที"; 
			if(wan==0 && hour==0 && minute==0 && second==0){
				clearInterval(iCountDown); // ยกเลิกการนับถอยหลังเมื่อครบ
				// เพิ่มฟังก์ชันอื่นๆ ตามต้องการ
			}
	}
}
// การเรียกใช้
var iCountDown=setInterval("countDown()",1000); 
</script>

 



โดย:  Ninenik IP: 124.120.6.xxx วันที่: 05-06-2010
 ความคิดเห็นที่ 1

เอ่อ ผมว่าไอ้ได้มันก็น่าจะได้นะครับแต่ว่า ตั้งเวลาที่เครื่องให้มันเท่าๆ กันง่ายกว่าไหมอ่ะครับ เพราะถึงยังไงเวลาไปเปิดเครื่องที่ ญี่ปุ่นหรือ อเมริกา Time Zone มันก็ไม่เืท่ากันอยู่แล้วนะครับ เพราะเท่าที่ดูจากสคิปแล้วน่้าจะเป็นการถึงเวลาจากเครื่องของเราเองมากกว่าครับ ถ้าบอกว่าเปิดสองเครื่องไม่เท่ากัน ผมว่าอย่างมากมันก็ห่างกันไม่ถึงครึ่งชั่วโมงหลอกมั๊ง 10 นาทีนี่ก็เกินไปแล้วแหละครับ ทางที่ดีผมว่าตั้งเวลาให้เท่ากันแหละดีแล้ว เพราะถ้าเกิดไปเปิดเครื่องคนละทวีปยังไงเวลามันก็ไม่เท่ากันอยู่แล้วอ่ะครับเดี๋ยวจะกลายเป็นว่าไปเปิดที่ อเมริกา แล้วมาอ้างอิงเวลา Time Zone ของประเทศไทยมันก็ไม่ถูกซะเลยอ่ะครับเหอๆ ยกเว้นจะเอาไปทำอะไรบางอย่าง ถ้าอยากได้อย่างนั้นจริงๆ ก็อ้างเวลาจาก Server แทนก็น่าจะได้่อยู่ครับ มาช่วยตอบ แต่รอคำคอบของ ผู้ดูแลบอร์ดก่อนก็ดีครับ อิอิ



โดย:  Nightmare IP: 114.128.249.xxx วันที่: 05-06-2010 เวลา: 12:53:18