เวลานี้เมื่อ 10 ปีก่อน เราคงกังวลเรื่องปี 2000 กันมากมายแน่นอน รวมถึงวันที่ 9/9/99 อีก (ทั้งๆ ที่ไม่มีผลอะไรเลย) แต่้ก็ผ่านมาโดยไม่มีปัญหาอะไร ตอนนั้นผมยังเป็นเด็กน้อย คิดว่าเป็นเรื่องไกลตัวมากๆ คงไม่กระทบอะไรหรอก (ยังเขียนโปรแกรมไม่เป็น)
พอตอนนี้เขียนโปรแกรมพอได้บ้างล่ะ ถ้าหากโปรแกรมไหนทำงานเกี่ยวกับเวลา ผมจะใช้ timestamp ตลอดเลย ไม่ว่าจะเก็บแค่ date หรือ time ผมก็จะใช้ timestamp เสมอ เพราะแทบทุกโปรแกรมมีฟังก์ชั่นสำหรับเปลี่ยน timestamp เป็น date หรือ time แน่นอน (รวมถึงฐานข้อมูลด้วย)
ทีนี้ timestamp มันเป็นตัวเลข "จำนวนวินาที" ตั้งแต่วันที่ 1900/1/1 0:0:0 จนถึงเวลาปัจจุบัน แล้วเก็บเป็นตัวเลข 32bit unsigned ทำให้ค่าสูงสุดมีแค่ 4294967296 (ไม่ใช่ 9999999999 แบบที่ผมเคยเข้าใจ)
ถ้าหากถึงวันนั้นจริงๆ เราจะแก้ปัญหากันยังไงเหรอครับ แน่นอนมันอีกนาน โปรแกรมหลายๆ โปรแกรมที่เคยเขียนไป อาจจะมีอายุไม่ถึงตอนนั้นก็ได้ หรือจะเปลี่ยน timestamp เป็น 64 bit ไปเลย ก็คงต้องมานั่ง compile กันใหม่ ให้เข้ากับ compiler ในตอนนั้น ส่วนฐานข้อมูลก็ alter กันหนุกหนาน
เราควรใส่ใจกับปัญหานี้ไหมอ่ะครับ หรือ ... let it be :(
หมายถึง Y2K38
kurosame Sat, 06/06/2009 - 11:12
หมายถึง Y2K38 ใช่มั้ยฮะ
เดี๋ยวมัน
nat3738 Sat, 06/06/2009 - 18:29
เดี๋ยวมันก็ผ่านไปเอง...
น่าจะอย่า
kurosame Mon, 08/06/2009 - 18:03
In reply to เดี๋ยวมัน by nat3738
น่าจะอย่างนั้นหล่ะ
อีก 20 ปี app จะเป็นไงละเีนี่ยเหอๆ
รู้สึกว่า
nat3738 Mon, 08/06/2009 - 20:47
In reply to น่าจะอย่า by kurosame
รู้สึกว่าตอน Y2K มันก็ผ่านไปเองนี่ หรือผมจำผิด (เกิดไม่ค่อยทัน)
ปี '85 เป็น 16 บิต '95 เป็น 32 บิต '05 เริ่ม 64 บิต ถ้าใช้กฎของมัวร์ ปี '38 น่าจะประมาณ 192-256 บิต
กฎของมัวร
mr_tawan Tue, 09/06/2009 - 17:50
In reply to รู้สึกว่า by nat3738
กฎของมัวร์ไม่น่าเกี่ยวกับจำนวนบิทนี่ครับ
เห็นว่าเกี่ยวกับจำนวนทรานซิสเตอร์ภายใน ? (ไม่แน่ใจ)
ภาษา C
magicbank Sun, 07/06/2009 - 01:47
ภาษา C ดั้งเดิมนี่ ผมก็ไม่แน่ใจน่ะครับว่าจะแก้ยังไง เคยเห็นผ่านตา แต่ก็ลืมไปแล้ว
แต่ถ้าเป็น java ที่ผมใช้ มันเก็บ timestamps เป็น long ครับ เลยเก็บได้มากกว่า int
compile
Kerberos Mon, 08/06/2009 - 22:07
In reply to ภาษา C by magicbank
compile ใหม่สิครับ (บน platform 64 บิตนะ) เพราะ int ใน c มีขนาดเท่ากับ 1 word ซึ่งก็แล้วแต่ platform ว่า 1 word เป็นกี่ไบท์
ไม่ตายไม่เลิก
กว่าจะถึง
immortalt Tue, 09/06/2009 - 17:12
กว่าจะถึงวัน นั้น เหลืออีก ประมาณ 96 ปี (unsigned int) รึเปล่า อ่าครับ ถ้าคำนวณ ไม่ผิดอ่า
เพราะตอนนี้ timestamp มันประมาณ 1244516464 เอง
ถ้า store เป็นแบบ signed int ก็เหลือประมาณ อีก 28 ปี
มันเป็น signed
nat3738 Tue, 09/06/2009 - 21:05
In reply to กว่าจะถึง by immortalt
มันเป็น signed int ครับ (ลองดูหน้าวิกิใน comment แรก)
คิดว่าเจ้
Sikachu Fri, 12/06/2009 - 22:45
คิดว่าเจ้าของกระทู้คงหมายถึง Y2K38 นั่นแหละครับ :)
บล็อกของผม: http://sikachu.com