我创建了一个函数,我为其提供四分之一(1、2、3或4)和一年(例如2014年)。该函数然后计算本季度的第一天和最后一天。
它有时工作得很好,但是当我喂四分之一"4“时,我得到了这一行中的一个超出范围的例外:
Dim dtLastDay As New DateTime(uYear, 3 * uQuarter + 1, 1)我不知道为什么会发生这种情况。有人能帮忙吗?
非常感谢!
Public Sub QuarterYearToDates(ByVal uQuarter As Integer, ByVal uYear As Integer, ByRef uStart As Date, ByRef uEnd As Date)
Dim iMonth As Integer
If uQuarter = 1 Then
iMonth = 1
ElseIf uQuarter = 2 Then
iMonth = 4
ElseIf uQuarter = 3 Then
iMonth = 7
ElseIf uQuarter = 4 Then
iMonth = 10
End If
Dim dtFirstDay As New DateTime(uYear, 3 * uQuarter - 2, 1)
Dim dtLastDay As New DateTime(uYear, 3 * uQuarter + 1, 1)
dtLastDay = dtLastDay.AddDays(-1)
uStart = dtFirstDay
uEnd = dtlastday
End Sub发布于 2014-01-13 19:24:48
当您传递该值时,它将计算为13,并且没有第13个月。
您可以使用以下方法来处理此问题:
uEnd = dtFirstDay.AddMonths(3).AddDays(-1)DateTime.AddMonths方法将为您正确地处理这个问题。
发布于 2014-01-13 19:23:22
(3 * uQuarter + 1)的操作顺序是
(3*4)+1
或者是13.没有第13个月。
https://stackoverflow.com/questions/21099577
复制相似问题