[PHP] TimeStamp ทำพิษ
In 7tip | 5 comments | permalink
สวัสดี ช่วงนี้เจอกันบ่อยๆนะ สบายดีกันเปล่า แหะ แหะ OK ทักทายกันจบแระ เข้าเรื่องเข้าราว วันนี้ก็ว่าด้วยเรื่องของ TimeStamp ปกติเรื่องวันที่ เรื่องเวลาเนี่ย ไม่ค่อยจะใส่ใจเท่าไหร่ คือคิดว่ามันถูกต้องแหงมๆ เลยมองผ่านๆใช่มะ(หรือผมเป็นคนเดียว) แต่หลังจากอ่าน Entry นี้แล้ว ต้องใส่ใจกับมันหน่อยนา
เกริ่นนิดนึง(เดี๋ยวมันจะสั้นไป) TimeStamp คือ ตัวเลขชุดหนึ่ง เก็บจำนวนวินาทีตั้งแต่ วันที่ 1 มกราคม 1970 เวลา 00:00:00 นับทุกๆวินาทีจนถึงปัจจุบันไปเรื่อยๆ อันนี้คือนิยามที่เขาว่ากันหน่ะนะ(ไม่เชื่อลองค้นดูก็ได้ ->อากู๋)
จากนิยามข้างต้น ทำให้เราเชื่อถือได้ว่าค่า TimeStamp น่าจะเหมือนกันหมดทุกหนแห่ง ไม่ว่าจะ Server ตัวใหน OS อะไร ค่า TimeStamp เท่ากัน จะต้องนำมาแปลงเป็นค่า วันที่ และ เวลา ตรงกันแน่นอน
ทีนี้เลยเป็นเรื่องเลย เพราะผมคิดว่ามันแน่นอน เลยคิดว่าจะเก็บค่า TimeStamp ลงฐานข้อมูล เพื่อใช้ประมวลผลต่อไป โดยเก็บค่า TimeStamp จาก Server ลงมาคำนวณที่เครื่องผมเอง(Desktop) ซึ่งตอนทดสอบ(มองผ่านๆอีกหน่ะแหละ) มันก็ใช้ได้ วันที่+เวลา ก็ตรง แปลง GMT กลับไปกลับมา ก็ตรง สรุป ดี ใช้ได้ ลุยเลย!
ทดลองเก็บข้อมูลไปสักพัก(2-3 ชั่วโมง) ก็ลองเอาข้อมูลมาประมวลผลดู ปรากฏว่า บ๊ะแหล่ว ทำไมมันไม่ตรงฟะ นั่งมึนสิ วัน+เวลา มันผิดไป 12 ชั่วโมง ได้ไงเนี่ย!!!
หลังจากนั่งมึน+ร้อน เลยมานั่ง Debug ดู ปรากฏว่าค่า TimeStamp เครื่องผม กับเครื่อง Server ไม่ตรงกัน ว่าแล้วก็เขียน Code ทดสอบง่ายๆขึ้นมาบรรทัดนึง
echo “DateTime:”.date(”d/m/Y H:i:s”,0);
ค่าที่ได้เป็นจั่งซี๊
[เครื่องผมเอง]
DateTime:01/01/1970 07:00:00
[เครื่อง Server -> Hostgator นี่หล่ะครับ ไม่ใช่อื่นไกล]
DateTime:31/12/1969 18:00:00
น่าจะเห็นภาพนะ ที่วินาทีที่ 0 ทำไมไม่เป็นวันที่ 1 มกราคม 1970 เวลา 00:00:00 หล่ะฟะ ยิ่งเจ้า Gator ยิ่งแล้วใหญ่เลย จะว่าเป็นที่ GMT ก็ไม่ใช่ เครื่องผม GMT+7 ก็ OK แต่ Gator มัน GMT-5 นี่ไม่เห็นจะตรงเลย จริงๆจะ GMT เท่าไหร่ มันก็ต้องเริ่มที่ 01/01/1970 00:00:00 สิฟะ เล่นเอาผมงงเต๊ก สรุปเก็บข้อมูลเป็น TimeStamp ไม่ได้แล้ว เลยต้องหันมาเก็บเป็น Date Format แทน เก็บแบบนี้ก็แปลงไปแปลงมาได้เหมือนกัน YYYY-MM-DD HH:MM:SS
~โอย!!! โดน TimeStamp พ่นพิษ ขอลาไปนอนก่อนล่ะคร๊าบ~
เรื่องที่เกี่ยวข้อง
email this | tag this | digg this | trackback | comment RSS feed

php ผมไม่เก่งครับ 555
ผมอยากแลกลิงค์ครับไม่รู้ว่าจะแลกไหมครับ
เว็บผม www.itonblog.com
เรื่องที่เกี่ยวข้อง น่าคลิกนะ ผมคลิกไปแล้วล่ะ 1 ที
จะ นับเวลา 1-1-1970 0:00 ของเวลา GMT 0
ส่วนเครื่อง คุณอาจจะตั้ง เวลาไว้ +7
เลยทำให้เวลาแสดงผลเป็น เวลา 7 นาฬิกา
@iAmbAsE
ผมก็เขียนใน Entry แล้วนิ แล้วที่ HostGator GMT-5 หล่ะ จะว่ายังไง อธิบายหน่อยสิ
แล้วทำยังไงมันถึงจะได้เวลาที่ถูกต้องอ่ะคับ