ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 4321|ตอบกลับ: 3

[VB.NET] การคำนวณหาจำนวนวันหยุดเสาร์ - อาทิตย์ ตามช่วงเวลาที่เรากำหนด

[คัดลอกลิงก์]

308

กระทู้

498

โพสต์

5973

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
5973


หลักการคิด: คำนวณหาจำนวนวันที่เลือกจากวันที่เริ่มต้นและวันที่สิ้นสุด จากนั้นทำการลูปตามจำนวนช่วงวันที่เลือก ทำการแยกแยะตาม DayOfWeek ออกมา โดยที่วันอาทิตย์ (Sunday) มีค่าเป็น 0 ส่วนวันเสาร์มีค่าเป็น 6 (สำหรับ Visual Basic.NET) ...
มาดูโค้ดกันเถอะ ...

  1. Public Class frmCountHoliday

  2.     ' / -----------------------------------------------------------------------------
  3.     '// Check Holiday
  4.     Private Sub btnCalHoliday_Click(sender As System.Object, e As System.EventArgs) Handles btnCalHoliday.Click
  5.         Dim CountSun As Integer = 0
  6.         Dim CountSat As Integer = 0
  7.         Dim StartDate As DateTime = Convert.ToDateTime(dtpStartDate.Text)
  8.         Dim EndDate As DateTime = Convert.ToDateTime(dtpEndDate.Text)
  9.         '// Find the number of days to loop.
  10.         Dim TotalDays = (EndDate - StartDate).TotalDays
  11.         'MsgBox(TotalDays)
  12.         Call SetupDataGrid()
  13.         For i = 0 To TotalDays
  14.             '// https://docs.microsoft.com/en-us/dotnet/api/microsoft.visualbasic.dateandtime.weekday?view=netframework-4.8
  15.             '// Check that the DayOfWeek value.
  16.             Dim weekday As DayOfWeek = Convert.ToDateTime(dtpStartDate.Text).AddDays(i).DayOfWeek
  17.             Dim MyFormatDate As String = "dd/MM/yyyy"
  18.             '// FirstDayOfWeek.Saturday = 6
  19.             If weekday = DayOfWeek.Saturday Then
  20.                 If chkSaturday.Checked Then
  21.                     CountSat += 1
  22.                     Dim row As String() = {Convert.ToDateTime(dtpStartDate.Text).AddDays(i).ToString(MyFormatDate), DayOfWeek.Saturday.ToString, DayOfWeek.Saturday}
  23.                     dgvData.Rows.Add(row)
  24.                 End If
  25.             End If
  26.             '// FirstDayOfWeek.Sunday = 0 (Default)
  27.             If weekday = DayOfWeek.Sunday Then
  28.                 If chkSunday.Checked Then
  29.                     CountSun += 1
  30.                     Dim row As String() = {Convert.ToDateTime(dtpStartDate.Text).AddDays(i).ToString(MyFormatDate), DayOfWeek.Sunday.ToString, DayOfWeek.Sunday}
  31.                     dgvData.Rows.Add(row)
  32.                 End If
  33.             End If
  34.         Next
  35.         lblSaturday.Text = CountSat & " [Days]"
  36.         lblSunday.Text = CountSun & " [Days]"
  37.     End Sub

  38.     Private Sub frmCountHoliday_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
  39.         lblSaturday.Text = ""
  40.         lblSunday.Text = ""
  41.     End Sub

  42.     ' / -----------------------------------------------------------------------------
  43.     '// Initialize DataGridView @Run Time
  44.     Private Sub SetupDataGrid()
  45.         With dgvData
  46.             .Columns.Clear()
  47.             .Rows.Clear()
  48.             .RowHeadersVisible = False
  49.             .AllowUserToAddRows = False
  50.             .AllowUserToDeleteRows = False
  51.             .AllowUserToResizeRows = False
  52.             .MultiSelect = False
  53.             .SelectionMode = DataGridViewSelectionMode.FullRowSelect
  54.             .ReadOnly = True
  55.             .Font = New Font("Tahoma", 9)
  56.             ' Autosize Column
  57.             .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
  58.             .AutoResizeColumns()
  59.             '// Even-Odd Color
  60.             .AlternatingRowsDefaultCellStyle.BackColor = Color.Orange
  61.             ' Adjust Header Styles
  62.             With .ColumnHeadersDefaultCellStyle
  63.                 .BackColor = Color.Navy
  64.                 .ForeColor = Color.Black ' Color.White
  65.                 .Font = New Font("Tahoma", 9, FontStyle.Bold)
  66.             End With
  67.         End With
  68.         '// Declare columns type.
  69.         Dim Column1 As New DataGridViewTextBoxColumn()
  70.         Dim Column2 As New DataGridViewTextBoxColumn()
  71.         Dim Column3 As New DataGridViewTextBoxColumn()
  72.         '// Add new Columns
  73.         dgvData.Columns.AddRange(New DataGridViewColumn() { _
  74.                 Column1, Column2, Column3 _
  75.                 })
  76.         With dgvData
  77.             .Columns(0).Name = "Date"
  78.             .Columns(1).Name = "Day"
  79.             .Columns(2).Name = "Day of Week"
  80.         End With
  81.     End Sub

  82. End Class
คัดลอกไปที่คลิปบอร์ด

ดาวน์โหลดโค้ดต้นฉบับ VB.NET (2010) ได้ที่นี่ ...

ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

x
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

3

กระทู้

17

โพสต์

265

เครดิต

Full Member

Rank: 3Rank: 3

เครดิต
265
โพสต์ 2019-5-17 15:59:10 | ดูโพสต์ทั้งหมด

แจ่มเลยครับ

0

กระทู้

51

โพสต์

233

เครดิต

Full Member

Rank: 3Rank: 3

เครดิต
233
โพสต์ 2019-5-26 17:28:09 | ดูโพสต์ทั้งหมด

ขอบพระคุณอย่างสูงครับ อาจารย์

0

กระทู้

2

โพสต์

10

เครดิต

Newbie

Rank: 1

เครดิต
10
โพสต์ 2022-8-2 14:33:43 | ดูโพสต์ทั้งหมด

ขอบคุณครับ
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2024-3-29 16:28 , Processed in 0.262214 second(s), 4 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้