Я знаю, что Sql Server имеет некоторые удобные встроенные ежеквартальные данные , но как насчет нативного DateTime объекта. Как лучше всего сложить, вычесть и пересечь четверти?
Является ли плохой вещью ™ использование VB-специфической функции DateAdd () ? e.g.:
Dim nextQuarter As DateTime = DateAdd(DateInterval.Quarter, 1, DateTime.Now)
Edit:
Расширение функции @ bslorence:
Public Shared Function AddQuarters(ByVal originalDate As DateTime, ByVal quarters As Integer) As Datetime
Return originalDate.AddMonths(quarters * 3)
End Function
Расширение функции @ Мэтта:
Public Shared Function GetQuarter(ByVal fromDate As DateTime) As Integer
Return ((fromDate.Month - 1) \ 3) + 1
End Function
Редактировать: вот еще пара полезных функций:
Public Shared Function GetFirstDayOfQuarter(ByVal originalDate As DateTime) As DateTime
Return AddQuarters(New DateTime(originalDate.Year, 1, 1), GetQuarter(originalDate) - 1)
End Function
Public Shared Function GetLastDayOfQuarter(ByVal originalDate As DateTime) As DateTime
Return AddQuarters(New DateTime(originalDate.Year, 1, 1), GetQuarter(originalDate)).AddDays(-1)
End Function