计算给定日期的季度的开始日期和名称

cll*_*pse 40 c# date

如何查找给定日期四分之一的开始日期和名称(1,2,3等)?

Joe*_*Joe 108

像(未经测试)的东西:

DateTime date;
int quarterNumber = (date.Month-1)/3+1;
DateTime firstDayOfQuarter = new DateTime(date.Year, (quarterNumber-1)*3+1,1);
DateTime lastDayOfQuarter = firstDayOfQuarter.AddMonths(3).AddDays(-1);
Run Code Online (Sandbox Code Playgroud)

  • @simonlchilds - 是的,它乘以3然后加1,而不是乘以4.即相当于`((date.Month-1)/ 3)+ 1`和`((quarter-1)*3)+ 1` (3认同)
  • @roosteronacid:`(quarterNumber-1)*3 + 1`将给出给定季度第一个月的月份数.该代码为一年中该月的第一天创建一个"DateTime".那是本季度的第一天.然后它增加了三个月.那将是*下一个*季度的第一天,所以想要的季度的最后一天将是前一天(`.AddDays(-1)`做那个技巧). (2认同)

Zom*_*eep 6

int GetQuarterName(DateTime myDate)
{
    return (int)Math.Ceiling(myDate.Month / 3.0);
}

DateTime GetQuarterStartingDate(DateTime myDate)
{
    return new DateTime(myDate.Year,(3*GetQuarterName(myDate))-2,1);
}
Run Code Online (Sandbox Code Playgroud)

GetQuarterName 获取当前月份数/ 3的"下一个"整数值.

GetQuarterStartingDate使用输出GetQuarterName来计算月份值,原始日期的年份部分,以及1表示要返回的月份的第一天.

(道歉没有意义,我有流感.:()