How to get the week number of the month with JS?

PasuJ
2 min readOct 20, 2022

--

พอดีได้มีโอกาสทำ Report ตัวนึง แล้วทาง PM อยากได้ข้อมูล Week ของวันที่ที่ระบุว่าเป็น Week ที่เท่าไหร่ จึงเกิดบทสนทนานี้ขึ้นมา

ME : ข้อมูล Week นี้ อยากเห็นเป็นมุมมอง “Week of Year” หรือ “Week of Month” นะครับ

PM: จริงๆอยากได้เป็นแบบ “Week of Month” นะ แต่ไม่ซีเรียสนะ . . .

(ไม่ซีเรียส = มีก็ดี ฮ่าๆๆ)

หลังจากลอง คิด + ค้นหา เพื่อดูว่าที่เราคิดเนี่ยมันถูกใช่มั้ย

เลยมาเขียนเป็นบทความเก็บเอาไว้ เผื่อเป็นหนึ่งในตัวที่ช่วยคนอื่นๆ ได้สืบต่อไป. . .

Ref. https://66.media.tumblr.com/c526d4bb4261b1d1dd7f1f2124007e17/tumblr_o7416mOF7i1vnqmpbo1_500.gifv

เข้าเรื่องกันเลยดีกว่า

ในบทความนี้เราก็จะใช้เจ้า JS (Javascript) เป็นหลักนะครับ

การทำงานของ Function มีเพียงแค่

  1. รับวันที่เข้ามา [Input Date]
  2. ส่งกลับออกไปว่า เป็น Week ที่เท่าไหร่ของเดือน (Week of the month) [Return WeekNumber]

หน้าตา Function ก็จะประมาณนี้

โดยเราจะเริ่มนับวันแรกของ week คือ วันจันทร์ และ สิ้นสุดที่ วันอาทิตย์

Let’s start coding.

Line 3 : แปลงค่าที่รับมาให้เป็น Date format เสียก่อน

Line 4 : หาว่าวันแรกของเดือนเป็นวันอะไร [Sun — Sat] (getDay() จะได้ค่าออกมาเป็น 0–6 )

Line 6 : เอาเฉพาะค่าวันที่ [date.getDate()] มาบวกกับวันแรกของเดือน-1 [firstDayOfMonth-1]แล้ว นำทั้งหมดมา หาร 7

จากนั้นใช้ Math.ceil() มาครอบ เพื่อปัดเศษจากค่าที่ได้ขึ้น เช่นได้ออกมา 0.12 => 1

ตัวอย่างเมื่อใช้ Math.ceil()

จบ!! เรียบร้อย ไปดูตัวอย่างกัน

ตัวอย่าง

เราต้องการหาวันที่ 2022–10–03 ว่าอยู่ในสัปดาห์ที่เท่าไหร่ของเดือน ?

  1. หาว่าวันเริ่มต้นของเดือนเป็นวันอะไร : 2022–10–01 = วันเสาร์ [วันเสาร์ = 6]

ที่นี้เราจะได้ค่า

  • 3 = วันที่ที่ต้องการหา (03)
  • 6 = เลขระบุ ตำแหน่งของวันเสาร์
  • 7 = จำนวนวันใน 1 สัปดาห์
  • 1 = ค่าตายตัวเอาไว้ให้เริ่มต้นสัปดาห์เป็นวันจันทร์
  1. เอามาแทนค่า (3+(6–1)) / 7 = 1.14285714
  2. ทีนี้เราก็เอา Math.ceil(1.14285714) = 2

คำตอบ วันที่ 2022–10–03 อยู่ในสัปดาห์ที่ 2 ของเดือน

สรุป

ในบางครั้งบางงานเราอาจจะต้องการมุมมองของ Report ที่ต่างไปจากเดิมหรือ Report ที่เน้นดูในเชิงรายสัปดาห์(week) ก็หวังว่าบทความนี้จะเป็นอีกหนึ่งตัวช่วยสำหรับทุกคน

Demo > ClickMe

สำหรับบทความนี้ หากมีข้อผิดพลาดประการใดก็ขออภัยมา ณ​ ที่นี้ด้วย หรือท่านใดมีคำถาม หรือข้อเสนอแนะเพิ่มเติม ใส่ไว้ที่ Comment ได้เลยนะฮะ

Ref.

https://thewebdev.info/2022/01/24/how-to-get-the-week-number-of-the-month-of-a-given-date-with-javascript/

--

--

PasuJ
PasuJ

Written by PasuJ

Developer X Data Analytics

No responses yet