2009-09-29 69 views

回答

95

喜欢的东西(未经测试):

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); 
+0

你能解释一下你的代码做什么? – roosteronacid 2009-09-29 12:06:14

+2

@roosteronacid:'(quarterNumber-1)* 3 + 1'将给出给定季度的第一个月的月份编号。该代码为该年的该月的第一天创建一个“DateTime”。这是本季度的第一天。然后它增加了三个月。这将是* next *季度的第一天,所以通缉季度的最后一天将是前一天('.AddDays(-1)'这样做)。 – 2009-09-29 12:53:05

+0

请参阅@il_guru answer here => http://stackoverflow.com/questions/11154673/get-the-correct-week-number-of-a-given-date – mynkow 2014-01-06 13:30:49

5
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); 
} 

GetQuarterName获得当月的 “下一个” 整数值数/ 3

GetQuarterStartingDate使用从GetQuarterName输出摸出月份值,原始日期的年份部分,1代表要返回的月份的第一天。

(道歉做没有意义的,我有流感。:()

2
 var date = new DateTime(2015, 3, 15); 

     var quarter = (date.Month + 2)/3; 

     var quarterStartMonth = 3 * quarter - 2; 

     var quarterStartDate = new DateTime(date.Year, quarterStartMonth, 1); 
0

一个较为简单的内胆采用现场演示here +按F8 运行。

var date = DateTime.Now; //Give you own DateTime 
int offset = 2, monthsInQtr = 3; 

var quarter = (date.Month + offset)/monthsInQtr; //To find which quarter 
var totalMonths = quarter * monthsInQtr; 

var startDateInQtr = new DateTime(date.Year, totalMonths - offset, 1); //start date in quarter 

如果您正在寻找在季度使用最后DateTime.DaysInMonth

var endDateInQtr = new DateTime(date.Year, totalMonths, DateTime.DaysInMonth(date.Year, totalMonths)); 
相关问题