当前位置:  开发笔记 > 编程语言 > 正文

计算本季度和上季度的StartDate和EndDate

如何解决《计算本季度和上季度的StartDate和EndDate》经验,为你挑选了1个好方法。

我需要在vb.net中计算当前季度和上一季度的StartDate和EndDate.



1> jason..:

我知道你指定了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


LINQ提示:你可以避免Where而只是说.First(d => d.Subtract(now).Days> = 0);
推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有