Как я могу найти дату начала и имя (1, 2, 3 и т.д.) четверти от заданной даты?
Рассчитать дату начала и название квартала с определенной даты
Ответ 1
Что-то вроде (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);
Ответ 2
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 для представления первого дня месяца для возврата.
(Извинения за отсутствие смысла, у меня грипп.:()
Ответ 3
https://msdn.microsoft.com/ru-ru/library/ms127415(v=vs.110).aspx
using Microsoft.VisualBasic;
var quarter = DateAndTime.DatePart(DateInterval.Quarter, (DateTime)dateTimePickerDateTime.Value);
Ответ 4
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);
Ответ 5
Проще всего два лайнера с живой демонстрацией здесь + нажмите 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));