2009-09-29 19 views

Respuesta

95

Algo así (no probado):

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

Puede explicar lo que hace el código? – roosteronacid

+2

@roosteronacid: '(quarterNumber-1) * 3 + 1' indicará el número de mes del primer mes del trimestre dado. El código crea un 'DateTime' para el primer día de ese mes del año. Ese es el primer día del trimestre. Luego agrega tres meses. Ese será el primer día del * próximo * trimestre, por lo que el último día del trimestre deseado será el día anterior ('.AddDays (-1)' hace ese truco). –

+0

Ver @il_guru respuesta aquí => 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 obtiene el "siguiente" valor entero del mes actual/número 3.

GetQuarterStartingDate utiliza la salida de GetQuarterName de resolver el valor del mes, la parte del año de la fecha original, y 1 para representar el primer día del mes para regresar.

(Disculpas por hacer que no tiene sentido, que tienen gripe. :()

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

Un sencillo de dos revestimiento con demostración en vivo here + presione F8 para funcionar

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 

Si usted está buscando en último día del trimestre uso DateTime.DaysInMonth

var endDateInQtr = new DateTime(date.Year, totalMonths, DateTime.DaysInMonth(date.Year, totalMonths)); 
Cuestiones relacionadas