我需要計算vb.net中當前季度和上一季度的StartDate和EndDate。計算本季度和上個季度的開始日期和結束日期
2
A
回答
3
原諒我缺乏VB.net,具體的答案,而是給出一個通用的排序,在一些僞語言的各種功能日期的對象(與基於零日和月索引)...
//round the current month number down to a multiple of 3
ThisQuarterStart = DateFromYearMonthDay(Today.Year,Today.Month-(Today.Month%3),0);
//round the current month number up to a multiple of 3, then subtract 1 day
ThisQuarterEnd = DateFromYearMonthDay((Today.Month<9)?(Today.Year):(Today.Year+1),(Today.Month-(Today.Month%3)+3)%12,0) - 1;
//same as above, but minus 3 months
LastQuarterStart = DateFromYearMonthDay((Today.Month<3)?(Today.Year-1):(Today.Year),(Today.Month-(Today.Month%3)+9)%12,0)
LastQuarterEnd = ThisQuarterStart - 1;
編輯轉換上面的僞代碼工作VB.Net: /斯特凡
Dim ThisQuarterStart As Date = New Date(Today.Year, Today.Month - (Today.Month Mod 3) + 1, 1)
Dim ThisQuarterEnd As Date = New Date(CInt(IIf(Today.Month < 9, Today.Year, Today.Year + 1)), (Today.Month - (Today.Month Mod 3) + 3 Mod 12) + 1, 1).AddDays(-1)
Dim LastQuarterStart As Date = New Date(CInt(IIf(Today.Month < 3, Today.Year - 1, Today.Year)), (Today.Month - (Today.Month Mod 3) + 9 Mod 12) + 1, 1)
Dim LastQuarterEnd As Date = ThisQuarterStart.AddDays(-1)
12
我知道你指定VB.Net
,但我更舒服C#
寫uncomplied代碼。如果有必要,我確定有人可以翻譯。
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
。
編輯,添加VB.Net版本上述C#-code的 /史蒂芬:
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
2
的vb.net皈依需要的變化。 將其更改爲vb 6並且應該讀取;
ThisQuarterStart = DateSerial(today.Year,today.Month - (IIF(today.Month國防部3 = 0,3,today.Month國防部3))+ 1,1)
ThisQuarterEnd = DateSerial(CINT (IIf(today.Month Mod 3 = 0,3,today.Month Mod 3))+ 3)(IIf(今天。月份Mod 3 = 0,3,今天。月份Mod 3) Mod 12)+ 1,1) - 1
相關問題
- 1. MySQL獲取季度的開始和結束日期按季度
- 2. 按季度計算日期
- 3. 按季度計算日期
- 4. 下一季度開始和結束日期SSRS
- 5. 如何獲取當前季度的開始日期和結束日期..?
- 6. 從給定日期計算季度的開始日期和名稱
- 7. 計算給定開始日期和結束日期之間每個季度的平均價格?
- 8. 查找給定日期的一個季度的結束日期
- 9. MDX計算量度 - 開始日期和結束日期之間的計數
- 10. 開始日期和結束日期之間的一個季度日期字符串
- 11. 在MySQL中返回上一季度的開始和結束日期
- 12. 本月的開始日期和結束日期以及本年的開始日期和結束日期
- 13. 計算本期和以後各年度季度基於今天的日期
- 14. 獲取有關給定開始和結束日期的季度數據
- 15. 如何獲得特定年份的每個季度的確切開始日期和結束日期在Ruby中
- 16. 開始日期和結束日期datepicker
- 17. 開始日期和結束日期
- 18. 通過Javascript獲取上季度和本季度的日期通過JavaScript
- 19. 如何計算日期?我有天+開始日期和查找結束日期
- 20. Excel日期格式 - 季度和年份
- 21. 獲取本週的開始日期和結束日期(星期一從星期一開始,星期日結束)
- 22. 計算上一季度結束
- 23. 計算夏令時開始和結束的日期和時間?
- 24. 生成開始日期和結束日期之間的日期
- 25. glyphicon日曆開始和結束日期
- 26. 本月的開始日期和結束日期
- 27. 如何獲取本週的開始日期和結束日期?
- 28. Android中本週開始和結束日期的日期爲
- 29. 查詢日期根據開始日期和結束日期
- 30. 加入開始日期的基礎上表和結束日期
定義「季度」。 – jason 2009-02-20 02:32:52
商業宿舍,所以第一季度將是1月/ 2月/ 3月 – Slee 2009-02-20 02:41:27
好吧,這使得解決問題相當簡單;我會在下面發表一個答案。我的問題是,每個公司和每個國家都使用他們自己的「季度」定義。 – jason 2009-02-20 02:52:59