ความสงสัยที่ว่าปีไหนบ้างที่เดือนกุมภาพันธ์จะมี 28 วัน และปีไหนบ้างที่เดือนกุมภาพันธ์จะมี 29 วันนี้เป็นสิ่งที่ผมได้ให้ความสนใจเป็นพิเศษหลังจากที่ได้เขียน web application แล้วต้องตรวจสอบข้อมูลที่รับเข้ามาว่าถูกต้องหรือไม่เช่น สมาิชิกคนหนึ่งกรอกข้อมูล วันเดือนปีเกิด เป็น 29/02/2009 ซึ่งเป็นข้อมูลที่ผิด เพราะปี 2009 เดือนกุมภาพันธ์มีแค่ 28 วัน 5555555+ เอาล่ะสิ แล้วตูจะรูได้ยังไงหว่าาาา ว่าวันที่เค้ากรอกมาเป็นวันที่ถูกต้องแล้ว....ซวยแล้วสิทีนี้

      หลังจากหาข้อมูลอยู่สักพักก็สรุปได้ว่า ปีที่มีวันเพิ่มมานั้นเราเรียกกันว่า “อธิกสุรทิน” ซึ่งแปลว่า “วันเกิน” ขณะที่ฝรั่งใช้คำว่า “ลีป" (leap) ที่หมายถึงการกระโดดหรือข้าม (ซึ่งเรียกกันทั้ง ลีปเดย์-leap day ที่หมายถึงวันที่ 29 ก.พ. หรือ ลีปเยียร์-leap year ที่หมายถึงปีที่มีวันที่ 29 ก.พ.) และสัญญลักษณ์แห่งปีกระโดดที่พวกเขาใช้คือ "กบ"

      ส่วนเราจะหาว่าปีไหนบ้างที่มีเดือนกุมภาพันธ์ได้ 29 วัน มีกฎง่ายๆ(รึเปล่า?) คือ
ปีคริสตศักราชที่หารด้วย 4 ลงตัว (ปีนี้ปี 2009 หารไม่ลงตัว)
แต่ 99% ของกฎในสากลโลกต้องมีข้อยกเว้น..
นั่นก็คือ ปีที่หารด้วย 100 ลงตัวไม่ต้องเพิ่มวันที่ 29 เข้าไป
(อย่างปี 1900 และ 1800 ก็หารด้วย 4 ลงตัวและหารด้วย 100 ลงตัว ดังนั้นจึงไม่ต้องเพิ่มวันที่ 29 ลงไป)
      
      ...แต่นั่นหาใช่สิ้นสุดไม่...
เพราะมีข้อยกเว้นของข้อยกเว้นบอกอีกว่า... แม้ จะผ่านด่านหารด้วย 4 และ 100 ลงตัวแล้วก็ตาม แต่ถ้าปีนั้นเกิดหารด้วย 400 ลงตัว ให้กลับไปใช้หลักการแรกสุด นั่นคือ เพิ่มวันที่ 29 เข้าไปด้วย
(อย่างปี 2000 และ 1600 หาร 4 ลงตัว, หาร 100 ก็ลงตัว ทว่ายังหารด้วย 400 ลงตัว ดังนั้นจึงเพิ่มวันที่ 29 ได้)
      
เรื่องนี้มีคำอธิบาย...
      
จากหลักการที่ว่า โลกโคจรรอบดวงอาทิตย์ 1 รอบกินเวลา 365.25224 วัน หรือ 365 กับอีกประมาณ ¼ วัน ซึ่งปีปกติที่มี 365 วันก็จะทำให้เวลาขาดไปประมาณ ¼ วัน ดังนั้นจึงต้องทดไว้ เมื่อทดครบ 4 ปีก็จะได้เท่ากับประมาณ 1 วัน จึงทำให้ต้องเพิ่ม 1 ปีมี 366 วันในทุกๆ 4 ปี
      
คราวนี้ถ้าทุกๆ 4 ปีมีวันเกินมา 1 วัน เมื่อถึง 400 ปีหรือครบ 100 รอบจะมีวันเกินไปอีก 3.104 วัน (เพราะ อีก 1 วันในทุกๆ 4 ปีเป็นเวลาโดยประมาณ) ดังนั้นในรอบทุกๆ 400 ปีจะต้องลดวันลงไป 3 วัน ก็เลยกำหนดให้ปีที่ครบร้อยแต่หาร 400 ไม่ลงตัว ไม่ต้องเพิ่มวันตามข้อยกเว้นที่กล่าวมา จึงจะเป็นการนับวันเวลาได้ใกล้เคียงกับวัฎจักรโลกและดวงอาทิตย์มากที่สุด
      อย่างไรก็ดี ด้วยหลักการนี้เมื่อครบรอบ 10,000 ปี วันในปฏิทินจะผิดจากความเป็นจริงไปอีก 3 วัน แต่อีกตั้งหมื่นปี...อืม....เอาไว้แค่นี้ก่อนล่ะกัน เอิ๊กๆๆๆ 

 

สรุปก็คือว่าปีที่มีจะมี 29 วันในเดือนกุมภาพันธ์คือปีค.ศ ที่หารด้วย 4 ลงตัว และต้องเป็นปีที่หารด้วย 100 ไม่ลงตัวหรือถ้าหาร 100 ลงตัว แต่หารด้วย 400 ลงตัวก็มี 29 วันเช่นกันครับ

ไหนๆก็ไหนๆ แล้วเขียน javascript function เอาไ้ว้เลยล่ะกันจะได้เอาไปใช้ได้เลยเผื่อจำเป็น

<script language="javascript" type="text/javascript">

  function getDaysInFebruary (p_iYearEng)
  {
    var numDays = 28 ;
    if (((p_iYearEng) % 4 == 0) && ( (!((p_iYearEng) % 100 == 0)) || ((p_iYearEng) % 400 == 0))){
      numDays = 29 ;
    }
    return numDays ;
  }
</script> 

 ถ้ามีอะไรเพิ่มเติมหรือมีข้อแนะนำก็ comment ได้เลยนะครับ 

 

วันนี้ได้อ่านข่าวเกี่ยวกับ search engine ตัวใหม่ครับ น่าสนใจมากๆ โดย search engine ตัวใหม่นี้มีชื่อว่า GazoPa ครับ ความสามารถที่น่าสนใจมากของ search engine ตัวนี้ก็คือสามารถใช้ลักษณะของภาพในการค้นหา โดยค้นหาจาก "สี และ รูปร่าง"!!!

โดยเจ้า GazoPa นี้เป็นผลงานของ ฮิตาชิ บริษัทผู้ผลิตฮาร์ดดิสชั้นนำจากแดนปลาดิบ แต่ตอนนี้เจ้า GazoPa ยังไม่ได้เปิดให้เข้าใช้อย่างเป็นทางการครับ ถ้ามีอะไรคืบหน้าจะแจ้งให้ทราบครับ




Never trust a woman.

    ที่เอา video นี้มาลงเนื่องมาจากพี่ๆ ที่ บ. เค้าส่ง forward มาให้ดูน่ะครับ แล้วเห็นทีไรเป็นอดขำไม่ได้ทุกที (ขำน้ำตาเล็ด) อีกอย่าง ก็โดยส่วนตัวยังไม่เคย insert video flashใน blog เลยครับก็เลยลองทำดูน่ะครับ เผื่อมี clip อะไรเด็ดจะได้เอามาฝาก หุ หุ หุ เอ..ไม่ใช่ clip อย่างที่คิดนะครับ (หรือว่าเราคิดคนเดียวหว่า...) 

    พูดถึงเรื่อง clip มีใครพอจะทราบรึเปล่าครับว่า สมมุติ ถ้าผมจะเขียนเว็บที่อาจจะมีเนื้อหาให้สามารถดู clip ได้ซึ่งขั้นตอนนี้อาจจะเป็นการ upload ของ admin หรือ user ก็ได้มันพอจะมี api ซึ่งสามารถ convert file ให้เราตอน upload มั้ยครับ หรือว่าเราต้อง convert เอง ที่เคยๆ ทำมีแต่ convert เองน่ะครับ เืผื่อจะมีใครเคยทำน่ะครับก็เลยอยากจะทราบน่ะครับ แล้วคิดว่า ตัวที่ใช้ในการแสดงหรือเล่น clip ควรจะใช้ตัวไหนดีครับ