我需要在vb.net中计算当前季度和上一季度的StartDate和EndDate.
我知道你指定了VB.Net
,但我更容易编写未编译的代码C#
.我相信如果有必要,有人可以翻译.
public static DateTime QuarterEnd() { DateTime now = DateTime.Now; int year = now.Year; DateTime[] endOfQuarters = new DateTime[] { new DateTime(year, 3, 31), new DateTime(year, 6, 30), new DateTime(year, 9, 30), new DateTime(year, 12, 31) }; return endOfQuarters.Where(d => d.Subtract(now).Days >= 0).First(); }
我更喜欢这种解决方案而不是其他涉及模运算和丑条件的解决方案,因为它很容易被修改以处理非标准的季度定义.QuarterStart
方法的定义类似地处理,并留给亲爱的读者练习.或者,您可以修改此方法以返回struct
包含所需开始和结束日期的方法.
编辑,添加上面的C#-code/Stefan的VB.Net版本:
Public Function QuarterEnd() As Date Dim endOfQuarters As Date() = New Date() { _ New Date(Now.Year, 3, 31), _ New Date(Now.Year, 6, 30), _ New Date(Now.Year, 9, 30), _ New Date(Now.Year, 12, 31)} Return endOfQuarters.Where(Function(d) d.Subtract(Now).Days >= 0).First() End Function