首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算最后一个季度的开始日期

计算最后一个季度的开始日期
EN

Stack Overflow用户
提问于 2018-01-09 03:00:02
回答 1查看 1.6K关注 0票数 1

我希望根据当前日期计算上一季度的开始日期。

哪里

代码语言:javascript
复制
Q1 = Jan-Mar
Q2 = Apr-Jun
Q3 = Jul-Sep
Q4 = Oct-Dec

因此,如果当前日期为8th Jan 2018,该函数将返回日期1st Oct 2017

我已经写了下面的代码,但是,这看起来很笨拙和不优雅,我有一种感觉,可能有更好的方法来编写它(例如,使用dateadd)。

代码语言:javascript
复制
Function LMLastQuarterStart() As Date
    Dim mo As Integer
    Dim yr As Integer: yr = Year(Date)
    Select Case Month(Date)
    Case 1 To 3: mo = 10: yr = yr - 1
    Case 4 To 6: mo = 1
    Case 7 To 9: mo = 4
    Case Else: mo = 7
    End Select
    LMLastQuarterStart = DateSerial(yr, mo, 1)
End Function

感谢您提供的任何意见/建议,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-09 04:25:29

您正在寻找的带有DateAdd的函数如下:

代码语言:javascript
复制
Public Function LastQuarter(theDate As Date) As Date
    LastQuarter = DateAdd("q", DatePart("q", theDate) - 2, DateSerial(Year(theDate), 1, 1))
End Function

解释:

DateSerial(Year(theDate), 1, 1))返回当前年度的第一个季度。

DateAdd("q", DatePart("q", theDate), ThatDate)添加当前季度,返回下一个季度(例如,季度1 ->季度2)。所以-2减去两个四分之一。

关于笨拙:这个函数可能更短,也可能包含更少的操作,但它更难理解。这可能是相关的,也可能不相关。

关于参数:我让它接受一个日期,这样既便于测试,又能让你保持变量。你可以随心所欲地使用它。

感谢Gustav建议使用DatePart而不是Format

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48156513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档