ปัญหาเกี่ยวกับการคำนวณวันที่ผิดพลาดนั้นพบได้บ่อยในระบบที่เขียนมาอย่างเลินเล่อ ถ้ายังจำกันได้ปีที่แล้วนั้น Zune ทุกเครื่องหยุดทำงานพร้อมกัน 1 วันเนื่องจากเครื่อง Zune นั้นนึกว่าปีที่แล้วมี 366 วัน (ข่าวเก่า) เหตุการณ์คล้ายกันนี้ก็เกิดขึ้นกับ PlayStation Network เมื่อไม่กี่วันที่ผ่านมาครับ

Patrick Seybold ซึ่งเป็นผู้จัดการด้านการสื่อสารองค์กรของ Playstation Network ได้ออกมาเปิดเผยว่าเครื่อง PlayStation 3 รุ่นเก่าที่ไม่ใช่รุ่น Slim นั้นจะเข้าใจว่าปี 2010 นี้เป็นปีอธิกสุรทิน (ปีที่เดือนกุมภาพันธ์มี 29 วัน) จนทำให้เครื่อง Playstation 3 นั้นทำงานกับเครือข่าย PlayStation Network ผิดพลาดในวันที่ 1 มีนาคม (เพราะเครื่องเข้าใจว่าเป็นวันที่ 29 กุมภาพันธ์) และเป็นสาเหตุที่ผู้ใช้หลายรายไม่สามารถใช้เครื่องในวันดังกล่าวได้ในที่สุด

สำหรับทางแก้นั้นทาง Sony นั้นได้กล่าวว่าเหตุการณ์ดังกล่าวหายแล้ว (เนื่องจากวันที่ผิดพลาดได้ผ่านไปแล้ว) และแนะนำให้ผู้ใช้ที่เครื่องแสดงวันช้าไป 1 วันนั้นสามารถที่จะตั้งค่าวันที่ได้ใหม่ด้วยตัวเองหรืออัพเดตผ่านอินเทอร์เน็ตครับ

ที่มา: PlayStation Blog

Hiring! บริษัทที่น่าสนใจ

Thoughtworks Thailand company cover
Thoughtworks Thailand
Thoughtworks เป็นบริษัทที่ปรึกษาด้านเทคโนโยลีระดับโลกที่คว้า Great Place to Work 3 ปีซ้อน
Bangkok Bank company cover
Bangkok Bank
Bangkok Bank is one of Southeast Asia's largest regional banks, a market leader in business banking
KBTG - KASIKORN Business-Technology Group company cover
KBTG - KASIKORN Business-Technology Group
KBTG - "The Technology Company for Digital Business Innovation"

แค่วันผิดนี่ถึงกับ กลายเป็นเศษเหล็กเลย!?
ผมรู้สึกกลัวจัง มันคล้ายๆกับ amazon kindle ที่เคยมีปัญหาว่าอยู่ดีๆก็อ่านเนื้หาที่ซื้มาแล้วไม่ได้

เหมือนเป็นกับดักเวลา

เหมือนอยู่ดีๆคอมทั้งโลกก้ใช้งานไม่ได้เมื่อไม่มีอินเตอรเน็ต ถ้าเรา chrome os กัน

ปล
จริงๆวันที่มันไม่น่าผิดได้นี่นา สูตรคำนวนก็มีอยู่ทั่วไป
หรือมันซับซ้อนกว่านั้น?

ระบบปฏิทินที่ใช้กันอยู่ทุกวันนี้ซับซ้อนครับ มันไม่ใช่แค่ ทุกๆ ที่ปีจะเป็นปีอธิกสุรธิน มันมีข้อยกเว้นพอสมควรครับ ถ้าจะเอาให้ถูกต้อง 100 %

เช่น คำสั่ง cal ใน linux ยังคำนวนวันในปี คศ400 4000 ผิดอยู่เลย

ทำไมถึงผิด เพราะโลกโครจรรอบดวงอาทิต์เป็นเวลา 365.2442 วัน โดยประมาณ ไม่ใช่ 365.25 วัน ครับ เวลาที่ผิดพลาดไปมันจะสะสมไปเรื่อยๆ เลยต้องมี ปีซักปี ที่จะต้อง กำจัดความผิดพลาดนี้ทิ้งไป

โดยการเพิ่มวันไปอีก 1 วัน ใช่ใหมครับ

แต่บังเอิญว่าหนึ่งวันนี้ มันก็ทำให้มีข้อผิดพลาดอีก เพราะการเพิ่มไปหนึ่งวันนี้มันจะทำให้ปฏิทินเร็วไปนิดหน่อย

เลยต้องมีการแก้ปัญหาโดยการทำให้ปอธิกสุรธินบางปี มี 28วัน คือ ยกเลิกปีอธิกสุธินไปนั้นไปเลย

(ขออภัยที่ผมจำการคำนวนโดยละเอียดไม่ได้)

ถ้าผมจำไม่ผิด หลักปัจจุบันทั่วไปที่ใช้คือ 365.2425 วันต่อปีครับ (ค่าจริงๆ จะน้อยกว่านี้หน่อย .242... จำไม่ได้) เลยทำให้คำนวณกันง่ายๆ ได้ว่า ทุกๆ 4 ปี ยกเว้นปีที่หาร 100 ลงตัว ต้องเป็นทุกๆ 400 ปี (ตามสูตรคอมเมนท์ด้านล่าง) ซึ่งค่าที่ผิดพลาดเล็กๆ นี้ ต้องยาวนานเกือบๆ หมื่นปีครับ ถึงจะเห็นวันที่คลาดเคลื่อน (ซึ่ง PS3 คงอยู่ไม่ถึงร้อยปีด้วยซ้ำมั๊ง)

ขอบคุณครับ ผมหมายถึงแบบที่คุณยกมานี่แหละ

ผมเข้าใจว่ามันมีโอกาศผิดได้ แต่ไม่ควรผิดใน100-200 ปีนี้ครับ

1 year = 365.2421897 days

ปล. จริงๆแล้วมันควรจะแม่นยำไปจนถึงปี 3200 เลยทีเดียว

http://en.wikipedia.org/wiki/Tropical_year#Calendar_year

ณ ช่วงเวลาปัจจุบัน ปีอธิกสุรทิน คือปีที่หาร 4 ลงตัว แต่หาร 100 ไม่ลงตัว แต่หาร 400 ลงตัว
isLeap = (year%4==0 && year%100 != 0) || year%400==0;

แต่ 2010 นี่ หาร 4 ยังไม่ลงตัวเลย
คิดไปได้ยังไงว่ามี 29 วัน

ครับ ภ้าคำนวนเวลาในปัจจุบันแค่นี้ก็พอ ต่ถ้าเวลามากมายเป็นนับพันนับหมื่นปี มันมีมากกว่านี้ เพราะไอ้ทศนิยมเล็กๆ ข้างหลังมัันคือปัญหา

ผมคิดกลับกันครับ ผมว่าควรใช้สูตรพื้นๆที่คำนวณถูกต้องใน 20 - 30 ปี นี้ก็พอ(จริงๆ กำหนดตายตัวเลยยังได้) เพราะผมไม่เชื่อว่าเครื่อง ps (หรือ zune) มันจะอายุยืนไปมากกว่านั้น - -"

เดี๋ยวคนรุ่นหลังไม่มีดูนะ ถ้าปล่อยให้ทำงานได้แค่ไม่เกิน 20 ปี สู้ Famicom ไม่ได้ไม่ต้องใช้วันที่ เล่นได้ตลอด

สงสัยจังว่าเค้าเอาจุดไหนเป็นวันเริ่มต้นคำนวน
เพราะมันจะมีจุดยกเว้นที่ประหลาดอยู่บ้าง เช่น วันที่ 5 ถึง 14 ตุลาคมหายไปในปี ค.ศ.1582
http://th.wikipedia.org/wiki/ปฏิทินเกรโกเรียน

ถ้าผมเขียนโปรแกรมนะ จะสั่งให้วันแรกที่ใช้คำนวนเป็นวันแรกของปีที่จำหน่ายเครื่องนั้นๆ พอ
หรือไม่งั้นก็ยึดเอาตามปี ค.ศ.2000 ไปเลย ง่ายดี
อายุการใช้งานเครื่องพวกนี้คงไม่เกิน 5 ปี แต่ก็เขียนเผื่อไว้ให้ไม่ผิดซัก 50 ปีพอละ

เขียนย้อนไปไกลๆ หรือเผื่ออนาคตไว้เยอะๆ แล้วเสียวพลาด ^^"

เป๊ะๆเลยคงเป็นไปได้ยากนะครับ เพราะหลายๆปัจจัยมันเปลี่ยนแปลงอยู่ตลอด เช่น

  1. ความเร็วที่ดวงอาทิตย์หมุนเชิงมุมในgalaxy เปลี่ยนแปลงอยู่ทีละนิด
  2. อัตราการโคจรรอบดวงอาทิตย์ของโลกไม่คงที่

ดังนั้น เวลาที่โลกใช้ในการหมุนรอบดวงอาทิตย์ ที่เราเรียกว่า 1 ปี กันจึงเปลี่ยนไปเรื่อยๆ
เช่น ปี 1900 1 ปี = 365.2421987 วัน
ปี 2000 1 ปี = 365.2421897 วัน

mr_tawan Wed, 03/03/2010 - 19:47

เห็นว่า Zune ก็เคยเจอปัญหาแบบนี้ แล้วเล่นเอาเครื่องเจ๊งไปเลยอีกต่างหาก

ไมโครซอฟท์บอกว่า "วิธีแก้คือ สูบแบตเตอรี่ออกให้หมด แล้วชาร์จไฟเ้ข้าไปใหม่หลังเที่ยงวันปีใหม่ 2009" ...

ผมว่าทางแก้มันก็ไม่ได้ฟังแย่อะไรนะครับเอาเข้าจริง ๆ คือมันเป็นอะไรที่มันแก้ไขเฉพาะหน้าได้ง่าย ๆ ส่วนทางแก้ระยะยาวก็ออกมากับ OS หรือ Firmware ตัวใหม่ก็ยังไม่สาย

(อย่าบอกใครนะ ผมปิด Ticket ด้วยวิธีนี้บ่อยเหมือนกัน 555)

ถ้ามันเป็นปัญหาประเภท ... เปิดไม่ติดอีกเลย นี่สิ งานเข้าของแท้ = ='

Apple
public://topics-images/apple_webp.png
SCB10X
public://topics-images/347823389_774095087711602_515970870797767330_n_webp.png
Windows 11
public://topics-images/hero-bloom-logo.jpg
Doom
public://topics-images/doom_logo.png
Huawei
public://topics-images/huawei_standard_logo.svg_.png
Threads
public://topics-images/threads-app-logo.svg_.png
Google Keep
public://topics-images/google_keep_2020_logo.svg_.png
Fortnite
public://topics-images/fortnitelogo.svg_.png
Instagram
public://topics-images/instagram_logo_2022.svg_.png
SCB
public://topics-images/9crhwyxv_400x400.jpg
Microsoft
public://topics-images/microsoft_logo.svg_.png
Basecamp
public://topics-images/bwpepdi0_400x400.jpg
Tinder
public://topics-images/hwizi8ny_400x400.jpg
FTC
public://topics-images/seal_of_the_united_states_federal_trade_commission.svg_.png
Pinterest
public://topics-images/pinterest.png
Palantir
public://topics-images/-nzsuc6w_400x400.png
Gemini
public://topics-images/google_gemini_logo.svg__0.png
AIS Business
public://topics-images/logo-business-2021-1.png
PostgreSQL
public://topics-images/images.png
JetBrains
public://topics-images/icx8y2ta_400x400.png
Krungthai
public://topics-images/aam1jxs6_400x400.jpg
Palworld
public://topics-images/mccyhcqf_400x400.jpg
Bill Gates
public://topics-images/bill_gates-september_2024.jpg
VMware
public://topics-images/1nj4i1gp_400x400.jpg
Take-Two Interactive
public://topics-images/0khle7nh_400x400.jpg
OpenAI
public://topics-images/ztsar0jw_400x400.jpg
Thailand
public://topics-images/flag_of_thailand.svg_.png
NVIDIA
public://topics-images/srvczsfq_400x400.jpg
ServiceNow
public://topics-images/ytnrfphe_400x400.png
PS5
public://topics-images/playstation_5_logo_and_wordmark.svg_.png
Klarna
public://topics-images/urcllpjp_400x400.png
Google Play
public://topics-images/play.png
Drupal
public://topics-images/drupal.png
Virtua Fighter
public://topics-images/virtua_figther_2024_logo.png
Paradox Interactive
public://topics-images/paradox_interactive_logo.svg_.png
Europa Universalis
public://topics-images/europa-icon.png
Nintendo Switch 2
public://topics-images/mainvisual.png
Cloudflare
public://topics-images/cloudflare_logo.svg_.png
Samsung
public://topics-images/samsung.png
Google
public://topics-images/google_2015_logo.svg_.png
Uber
public://topics-images/uber.png
Microsoft 365
public://topics-images/m365.png
USA
public://topics-images/flag_of_the_united_states.svg_.png
GM
public://topics-images/0pe0po-z_400x400.jpg
Perplexity
public://topics-images/perplex.jpg
Xperia
public://topics-images/xperia.png
iOS 18
public://topics-images/ios-18-num-96x96_2x.png