How can I find the start-date and name (1, 2, 3, etc.) of a quarter from a given date?
Something like (untested):
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);
A simpler two liner with live demo here + press F8 to run .
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
If you are looking at last day of the quarter use DateTime.DaysInMonth
var endDateInQtr = new DateTime(date.Year, totalMonths, DateTime.DaysInMonth(date.Year, totalMonths));