다음은 대한 금융 년 분기
April to June - Q1
July to Sep - Q2
Oct to Dec - Q3
Jan to March - Q4
위와 같은 경우 월 평균 출력은 거짓한 입력 데이트였어 데릭쉐퍼드와 측면에서 분기입니다 번호입니다.
예를 들어,
만약 내가 열거하십시오 입력 날짜를 2일 1월 (말하도다 , ) '로 데릭쉐퍼드와 출력물에는 Q4'.
내가 만약 입력되는 열거하십시오 5일 6월 (, ) 출력입니다 줘야 할 'q1'.
분기 기준으로 입력입니다 날짜 데릭쉐퍼드와 번호입니다.
짧고 간결한 원할 경우 분기 및 어레이에는 슬라이드에서는 내 없이 솔루션을 우선 솔루션.
보통 분기:
public static int GetQuarter(this DateTime date)
{
return (date.Month + 2)/3;
}
금융 년 분기:
public static int GetFinancialQuarter(this DateTime date)
{
return (date.AddMonths(-3).Month + 2)/3;
}
정수 분할 잘라냅니다 자리로 가 정수 결과: 제공합니다. 정적 클래스 및 확장명으로 메서드을 배치하십시오 붙여넣습니다 합니다 사용할 방법을 다음과 같습니다.
date.GetQuarter()
date.GetFinancialQuarter()
참조 도네피들
단순히 확장명으로 DateTime 방법을 쓸 수 있습니다.
public static int GetQuarter(this DateTime date)
{
if (date.Month >= 4 && date.Month <= 6)
return 1;
else if (date.Month >= 7 && date.Month <= 9)
return 2;
else if (date.Month >= 10 && date.Month <= 12)
return 3;
else
return 4;
}
정보기술 (it) 을 사용하고
DateTime dt = DateTime.Now;
dt.GetQuarter();
public static int GetQuarter(DateTime date)
{
int[] quarters = new int[] { 4,4,4,1,1,1,2,2,2,3,3,3 };
return quarters[date.Month-1];
}
가장 간단하고 일관된 방식으로 구현을 제공합니다.
일반
Math.Ceiling(date.Month / 3.0)
Math.Ceiling(date.Month / 3.0 + 2) % 4 + 1
01.01.2016 00:00:00 -> Q1 -> FQ4
01.02.2016 00:00:00 -> Q1 -> FQ4
01.03.2016 00:00:00 -> Q1 -> FQ4
01.04.2016 00:00:00 -> Q2 -> FQ1
01.05.2016 00:00:00 -> Q2 -> FQ1
01.06.2016 00:00:00 -> Q2 -> FQ1
01.07.2016 00:00:00 -> Q3 -> FQ2
01.08.2016 00:00:00 -> Q3 -> FQ2
01.09.2016 00:00:00 -> Q3 -> FQ2
01.10.2016 00:00:00 -> Q4 -> FQ3
01.11.2016 00:00:00 -> Q4 -> FQ3
01.12.2016 00:00:00 -> Q4 -> FQ3
결과는 1 사이의 값을 및 4. Ceil 는 거의 모든 환경에서 사용할 수 있는 기능 등을 이렇게 하면 어떤 언어 잘 알려져 있다.
sql 에서는 it& # 39 의 앨리어스가
((((month(@mydate)-1)/3)+3) % 4) + 1
체크 대체하십시오:
declare @mydate datetime
set @mydate = '2011-01-01'
while @mydate <= '2011-12-31'
begin
print ((((month(@mydate)-1)/3)+3) % 4) + 1
set @mydate = dateadd(month, 1, @mydate)
end
Net 에서는 it& # 39 와 같은, 또는 스케쳐내 해야 한다.
String.Format("Q{0}", ((((date.Month-1)/3)+3) % 4) + 1);
이렇게 됩니다.
for (int i = 1; i <= 12; i++) {
Console.WriteLine("Month {0} - Q{1}", i, Math.Ceiling((i <= 3 ? 12 - i + 1 : i - 3) / 3M));
}
출력됩니다. ! [입력하십시오. 이미지 여기에 설명을] [1]
이 방법은 지정할 수 있습니다 또한 시작 달 기간의 %hsmb 분기와 올해 전체적으로.
public string GetQuarterPeriod(DateTime date, int quarterStartMonth)
{
var quarterDateOffset = date.AddMonths(1 - quarterStartMonth);
return $"Q{Math.Ceiling((decimal)quarterDateOffset.Month / 3)} {quarterDateOffset.Year}"
+ (quarterStartMonth == 1 ? "" : $"/{quarterDateOffset.Year + 1}");
}
확증하노라:
GetQuarterPeriod(new DateTime(2018, 4, 1), 4) -> "Q1 2018/2019"
GetQuarterPeriod(new DateTime(2018, 1, 1), 1) -> "Q1 2018"
함수은 경우 1월 (1) 이 사실을 제약됩니다 고객을 대상으로 한 것은 한 것으로 알려졌다.