Би Ежемесячные даты, как? - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть код vb net для первого и последнего дня квартала, но я пытаюсь сделать это для первого и последнего дня ежемесячного периода Bi (который заканчивается в эти месяцы февраль, апрель, июнь, август, октябрь, декабрь)

Значит, даты начала и окончания каждого месяца С 1 января по 28 февраля (или 29) С 1 марта по 30 апреля, С 1 мая по 30 июня, и т.д.

Есть идеи, как это сделать? (в Vb спасибо)

'To get the first day of the quarter
Public Shared Function xFirstDayOfQuarter(ByVal theDay As DateTime) As DateTime
    Dim currQuarter As Integer = (Month(theDay) - 1) \ 3 + 1
    Dim FirstDayQuarter As DateTime = DateSerial(Year(theDay), 3 * currQuarter - 2, 1)
    Return FirstDayQuarter
End Function
'To get the last day of the quarter
Public Shared Function xLastDayOfQuarter(ByVal theDay As DateTime) As DateTime
    Dim currQuarter As Integer = (Month(theDay) - 1) \ 3 + 1
    Dim LastDayQuarter As DateTime = DateSerial(Year(theDay), 3 * currQuarter + 1, 0)
    Return LastDayQuarter
End Function

Это как далеко я добрался ..

    Private Function DayOfBiMonth(ByVal theDay As DateTime, ByVal FirstOrLast As Integer) As DateTime
    Dim res As DateTime = Util.gBASEDATE
    Dim Mth As Integer = Month(theDay)
    Dim Yr As Integer = Year(theDay)
    Dim BiMonth As Integer = -1

    Select Case Mth
        Case Is = 1, 2
            If FirstOrLast = 1 Then
                BiMonth = 1
            ElseIf FirstOrLast = 2 Then
                BiMonth = 2
            End If
        Case Is = 3, 4
            If FirstOrLast = 1 Then
                BiMonth = 3
            ElseIf FirstOrLast = 2 Then
                BiMonth = 4
            End If
        Case Is = 5, 6
            If FirstOrLast = 1 Then
                BiMonth = 5
            ElseIf FirstOrLast = 2 Then
                BiMonth = 6
            End If
        Case Is = 7, 8
            If FirstOrLast = 1 Then
                BiMonth = 7
            ElseIf FirstOrLast = 2 Then
                BiMonth = 8
            End If
        Case Is = 9, 10
            If FirstOrLast = 1 Then
                BiMonth = 9
            ElseIf FirstOrLast = 2 Then
                BiMonth = 10
            End If
        Case Is = 11, 12
            If FirstOrLast = 1 Then
                BiMonth = 11
            ElseIf FirstOrLast = 2 Then
                BiMonth = 12
            End If
    End Select

    If FirstOrLast = 1 Then
        res = DateSerial(Yr, BiMonth, 1)
    ElseIf FirstOrLast = 2 Then
        res = DateSerial(Yr, BiMonth, 20)
        res = Util.LastDayOfMonth(res)
    End If

    Return res
End Function
Private Function LastDayOfMonth(ByVal theDay As DateTime) As DateTime
    Dim FirstDayMonth As DateTime = DateSerial(Year(theDay), Month(theDay), 1)
    Dim LastDayMonth As DateTime = FirstDayMonth.AddMonths(1).AddDays(-1)
    Return LastDayMonth
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...