У меня есть код 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