ทำไม้… ทำไม…

ทำไมเราถึงไม่หาหน่วยวัดเวลาที่มันเป๊ะกับธรรมชาติมากกว่านี้
1 วัน คือช่วงเวลาที่ดวงอาทิตย์เคลื่อนไปบนฟ้า ลับขอบฟ้าไป แล้วกลับมาโผล่ที่เดิม (เมื่อมองจากโลก) อันนี้รับได้
1 ปี คือช่วงเวลาที่โลกโคจรรอบดวงอาทิตย์ครบหนึ่งรอบพอดี อันนี้ก็พอรับได้
แต่ทำไม 1 ปี ต้องมี 12 เดือน แล้วแต่ล่ะเดือนก็ดันมีวันไม่เท่ากัน 30 บ้าง 31 บ้าง 28 บ้าง (ทุก 4 ปี กลายเป็น 29 วันอีก – -“)

บ่นมาตั้งนาน เกี่ยวอะไรกับ Java เนี่ย…
ก็คือว่า วันนี้โดนเพื่อนขอ (สั่ง) ให้ช่วยเขียน method คำนวณระยะห่างระหว่างวันสองวัน เช่น 28/06/2009 กับ 30/06/2009 ก็ห่างกันสองวัน
หลังจากนั่งงมอยู่พักหนึ่ง ก็ได้ความคิดที่จะใช้ java.util.Calendar เพราะว่ามันมี method ชื่อ getTimeInMillis() ที่ให้ค่ามิลลิวินาทีของเวลาปัจจุบันออกมา แหม… ดีจัง 🙂

ว่าแล้วข้าพเจ้าก็ละเลงหน้า Netbeans ด้วยโค้ดยุบยับ สร้าง Calendar มาสองตัว เอามาเก็บวันที่สองวัน เรียก millisecond ของทั้งคู่ เอามาลบกัน จับหารด้วย 1000,60,60 และ 24 ก็ได้ออกมาเป็นจำนวนวัน อะฮ้า~ ท่าจะเวิร์ก

ทดสอบโดยใส่วันแรกเป็น 16/06/2009 อีกวันเป็น 25/06/2009 ผลออกมาว่าห่างกัน 9 วัน
ว้าวววว… เป๊ะจริงๆ เขียนทีเดียวรันผ่าน ใช้ได้ด้วย MegaHappy ดีใจสุดๆ จริงๆ 😀

คราวนี้ลองใหม่ ใส่ 28/02/2009 กับ 01/03/2009 รันไปป๊าบบบ…

เจ๊งครับพี่น้อง ผลออกมาได้ 4 วัน!!!

งานเข้าแล้วไง ได้มาได้ไงเนี่ย สี่วัน จะบ้าเหรอ หมด 28 กุมภาฯ มันก็ขึ้นเดือนใหม่แล้วนะค้าบ
คิดไปคิดมาก็เลยสรุป(ตามความเข้าใจตัวเอง)ได้ว่า มันคิดเวลาโดยให้ทุกเดือนมี 31 วันสินะ…

มิน่าล่ะ เวลาเป็นเดือนเดียวกันมันคำนวณได้ ไม่พลาด แต่พอข้ามเดือนล่ะเจ๊ง – -”

ทำให้รู้สึกสงสัยขึ้นมาว่า ทำไม้ทำไม ต้องแบ่งเดือนให้มันไม่เท่ากันด้วย แบ่งเท่าๆ กันได้มั้ย ว่าที่โปรแกรมเมอร์อย่างผมจะได้เขียนตัวคำนวณง่ายๆ หน่อย เฮ้อ~

ตอนนี้ได้ความคิดว่า คงจะต้องเขียนเงื่อนไขคิดวันเดือนปีซะเองแล้วล่ะมั้ง แต่ว่า… ขี้เกียจอะ เอาไว้มีอารมณ์ค่อยลองเขียนแล้วกัน (โปรแกรมมิ่งก็เป็นศิลปะแขนงหนึ่งนะครับ ต้องใช้อารมณ์ในการเขียน LOL)

ปล. ตอนนี้ลองค้นไปเรื่อยๆ จนไปเจอไอ้นี่เข้า
ucar.nc2.units.DateRange

ก็ไม่รู้ว่าเวิร์กมั้ย เพราะยังไม่ได้ลอง เดี๋ยวว่างๆ ลองสักหน่อยดีกว่า 😀