thongkorn โพสต์ 2019-5-15 13:50:33

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

http://www.g2gnet.com/webboard/images/vbnet/countholiday.png
หลักการคิด: คำนวณหาจำนวนวันที่เลือกจากวันที่เริ่มต้นและวันที่สิ้นสุด จากนั้นทำการลูปตามจำนวนช่วงวันที่เลือก ทำการแยกแยะตาม DayOfWeek ออกมา โดยที่วันอาทิตย์ (Sunday) มีค่าเป็น 0 ส่วนวันเสาร์มีค่าเป็น 6 (สำหรับ Visual Basic.NET) ...
มาดูโค้ดกันเถอะ ...
Public Class frmCountHoliday

    ' / -----------------------------------------------------------------------------
    '// Check Holiday
    Private Sub btnCalHoliday_Click(sender As System.Object, e As System.EventArgs) Handles btnCalHoliday.Click
      Dim CountSun As Integer = 0
      Dim CountSat As Integer = 0
      Dim StartDate As DateTime = Convert.ToDateTime(dtpStartDate.Text)
      Dim EndDate As DateTime = Convert.ToDateTime(dtpEndDate.Text)
      '// Find the number of days to loop.
      Dim TotalDays = (EndDate - StartDate).TotalDays
      'MsgBox(TotalDays)
      Call SetupDataGrid()
      For i = 0 To TotalDays
            '// https://docs.microsoft.com/en-us/dotnet/api/microsoft.visualbasic.dateandtime.weekday?view=netframework-4.8
            '// Check that the DayOfWeek value.
            Dim weekday As DayOfWeek = Convert.ToDateTime(dtpStartDate.Text).AddDays(i).DayOfWeek
            Dim MyFormatDate As String = "dd/MM/yyyy"
            '// FirstDayOfWeek.Saturday = 6
            If weekday = DayOfWeek.Saturday Then
                If chkSaturday.Checked Then
                  CountSat += 1
                  Dim row As String() = {Convert.ToDateTime(dtpStartDate.Text).AddDays(i).ToString(MyFormatDate), DayOfWeek.Saturday.ToString, DayOfWeek.Saturday}
                  dgvData.Rows.Add(row)
                End If
            End If
            '// FirstDayOfWeek.Sunday = 0 (Default)
            If weekday = DayOfWeek.Sunday Then
                If chkSunday.Checked Then
                  CountSun += 1
                  Dim row As String() = {Convert.ToDateTime(dtpStartDate.Text).AddDays(i).ToString(MyFormatDate), DayOfWeek.Sunday.ToString, DayOfWeek.Sunday}
                  dgvData.Rows.Add(row)
                End If
            End If
      Next
      lblSaturday.Text = CountSat & " "
      lblSunday.Text = CountSun & " "
    End Sub

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

    ' / -----------------------------------------------------------------------------
    '// Initialize DataGridView @Run Time
    Private Sub SetupDataGrid()
      With dgvData
            .Columns.Clear()
            .Rows.Clear()
            .RowHeadersVisible = False
            .AllowUserToAddRows = False
            .AllowUserToDeleteRows = False
            .AllowUserToResizeRows = False
            .MultiSelect = False
            .SelectionMode = DataGridViewSelectionMode.FullRowSelect
            .ReadOnly = True
            .Font = New Font("Tahoma", 9)
            ' Autosize Column
            .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
            .AutoResizeColumns()
            '// Even-Odd Color
            .AlternatingRowsDefaultCellStyle.BackColor = Color.Orange
            ' Adjust Header Styles
            With .ColumnHeadersDefaultCellStyle
                .BackColor = Color.Navy
                .ForeColor = Color.Black ' Color.White
                .Font = New Font("Tahoma", 9, FontStyle.Bold)
            End With
      End With
      '// Declare columns type.
      Dim Column1 As New DataGridViewTextBoxColumn()
      Dim Column2 As New DataGridViewTextBoxColumn()
      Dim Column3 As New DataGridViewTextBoxColumn()
      '// Add new Columns
      dgvData.Columns.AddRange(New DataGridViewColumn() { _
                Column1, Column2, Column3 _
                })
      With dgvData
            .Columns(0).Name = "Date"
            .Columns(1).Name = "Day"
            .Columns(2).Name = "Day of Week"
      End With
    End Sub

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

anuyut1995 โพสต์ 2019-5-17 15:59:10

แจ่มเลยครับ

MrDen โพสต์ 2019-5-26 17:28:09

ขอบพระคุณอย่างสูงครับ อาจารย์ {:2_31:}

nakana51 โพสต์ 2022-8-2 14:33:43

ขอบคุณครับ
หน้า: [1]
ดูในรูปแบบกติ: [VB.NET] การคำนวณหาจำนวนวันหยุดเสาร์ - อาทิตย์ ตามช่วงเวลาที่เรากำหนด