2009-09-29 16 views

Odpowiedz

95

Coś (niesprawdzone):

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

może Pan wyjaśnić, co robi Twój kod? – roosteronacid

+2

@roosteronacid: '(quarterNumber-1) * 3 + 1' poda numer miesiąca pierwszego miesiąca danego kwartału. Kod tworzy 'DateTime' dla pierwszego dnia tego miesiąca roku. To pierwszy dzień kwartału. Następnie dodaje trzy miesiące. To będzie pierwszy dzień * następnego * kwartału, więc ostatni dzień poszukiwanego kwartału będzie dzień wcześniejszy (".AddDays (-1)" robi tę sztuczkę). –

+0

Zobacz odpowiedź @il_guru tutaj => http://stackoverflow.com/questions/11154673/get-the-correct-week-number-of-a-given-date – mynkow

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 dostaje "obok" wartość całkowitą z bieżącego miesiąca/numer 3.

GetQuarterStartingDate wykorzystuje wyjście z GetQuarterName wypracować wartość miesiąca, część roku z pierwotną datą i 1, aby reprezentować pierwszy dzień miesiąca do powrotu.

(Przepraszam za co nie ma sensu, mam grypę. :()

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

Prostsza dwa liner z demo żywo here + nacisnąć F8 uruchomić

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 

Jeśli szukasz na ostatniego dnia stosowania ćwierć DateTime.DaysInMonth

var endDateInQtr = new DateTime(date.Year, totalMonths, DateTime.DaysInMonth(date.Year, totalMonths)); 
Powiązane problemy