我需要计算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. 从给定日期计算季度的开始日期和名称
- 5. MDX计算量度 - 开始日期和结束日期之间的计数
- 6. 开始日期和结束日期之间的一个季度日期字符串
- 7. 在MySQL中返回上一季度的开始和结束日期
- 8. 获取有关给定开始和结束日期的季度数据
- 9. 如何获得特定年份的每个季度的确切开始日期和结束日期在Ruby中
- 10. 开始日期和结束日期datepicker
- 11. 通过Javascript获取上季度和本季度的日期通过JavaScript
- 12. glyphicon日历开始和结束日期
- 13. 定制R上的季度日期
- 14. 本月的开始日期和结束日期
- 15. Android中本周开始和结束日期的日期为
- 16. 查询日期根据开始日期和结束日期
- 17. 计算从jquery的开始日期和持续时间的结束日期
- 18. Excel按季度计算,基于第一个月的日期
- 19. 计算人年减去开始日期从结束日期
- 20. 从jquery开始日期计算结束日期
- 21. 如何计算天峡结束日期之间的和开始日期在SQL
- 22. 大熊猫 - 使用指定的开始日期,结束日期和粒度
- 23. 总结连续的日期,开始和结束的块日期
- 24. 获取Crystal Reports当前季度的结束日期
- 25. SAS给定一个开始日期和结束日期我需要知道在开始日期和结束日期之后的每个30天的日期
- 26. 开始/结束的PL/SQL和计算日期差异
- 27. 开始日期计算给定结束日期和工作时间PL/SQL
- 28. Excel宏计算结束日期随开始日期和任务时间提供
- 29. Oracle - 将日期分为几个季度
- 30. Zend的日期和夏季
定义“季度”。 – jason 2009-02-20 02:32:52
商业宿舍,所以第一季度将是1月/ 2月/ 3月 – Slee 2009-02-20 02:41:27
好吧,这使得解决问题相当简单;我会在下面发表一个答案。我的问题是,每个公司和每个国家都使用他们自己的“季度”定义。 – jason 2009-02-20 02:52:59