Saumya J Pandey Ответов: 5

Функция поиска текущего квартала года


Привет,

Может ли кто-нибудь найти для меня код C#, с помощью которого я могу узнать, какой квартал это за текущий год .

например: Январь,Февраль,Март выпадают в Четверти1
Апрель-Июнь: Квартал 2
Июль-Сентябрь:Квартал 3
Окт-Дек-Quarter4

Ankit Rajput

Мы здесь, чтобы помочь вам, когда у вас возникнут какие-либо проблемы.
Мы здесь не для того, чтобы кодировать для вас.
Вы пробовали что - то самостоятельно?

Saumya J Pandey

Спасибо Анкиту за то, что сказал мне, что ты здесь, чтобы помочь, а не кодировать для меня. В любом случае у меня есть логика, но я не могу сделать это в linq.
Логика изложена ниже
int CurrentQuarter = ((DateTime.Now.Month - 1) / 3) + 1;
и в следующий раз, прежде чем комментировать чей-то запрос, лучше прочтите проблему. Человек, который задает вопрос, может оказаться в затруднении.

Ankit Rajput

Я прокомментировал ваш вопрос( "пожалуйста, найдите для меня код C#"). Думаю, теперь вы понимаете, почему я это написал.

Richard MacCutchan

Поскольку вы знаете ответ, почему вы опубликовали этот вопрос?

Marc A. Brown

Итак, вы попросили код и расстроились, потому что кто-то позвонил вам по нему. Затем вы показываете код C# (язык, на котором, как вы сказали, вам нужен код), который будет делать то, о чем вы говорите. Но вы упомянули, что не можете сделать это в linq. Поэтому сначала вы должны быть более вежливы с потенциальными ответчиками (мы видим здесь много вопросов "дай мне код", и они стареют). Во-вторых, если вам нужна помощь с linq, возможно, вам нужно повторно пометить свой вопрос, чтобы включить это *и* упомянуть его в вопросе. В-третьих, хорошего вам дня!

Smithers-Jones

К сожалению, голосование по комментариям невозможно, иначе я бы поставил вам пятерку, Марк. :-)

Saumya J Pandey

прошу прощения, ребята.. Моя вина.

5 Ответов

Рейтинг:
41

johannesnestler

Если вы знаете ответ, почему вы публикуете вопрос?
Во всяком случае, я думаю, что этот метод был бы неплохо реализован как метод расширения, подобный этому

static class ExtensionMethods
 {
     public static int GetQuarter(this DateTime dt)
     {
         return (dt.Month - 1) / 3 + 1;
     }
 }


и позвонил вроде бы:

int iQuarter = DateTime.Now.GetQuarter();


Saumya J Pandey

спасибо Йоханнес Нестлер... это действительно помощь..

johannesnestler

Рад, что тебе понравилось. Я думаю, что для этой небольшой проблемы вполне нормально попросить "Дайте мне код". Поэтому я не разделяю мнения комментаторов...

Saumya J Pandey

я рад, что вы, по крайней мере, понимаете срочность моих слов. :)

Рейтинг:
2

Umair Feroze

Ниже приведены несколько строк, которые делают трюк для вас. Измените его в соответствии с вашими потребностями

int mth = DateTime.Now.Month;
if (mth <= 3)
{
      Console.WriteLine("Quarter 1");
}
else if (mth > 3 && mth <= 6)
{
      Console.WriteLine("Quarter 2");
}
else if (mth > 6 && mth <= 9)
{
      Console.WriteLine("Quarter 3");
}
else if (mth > 9 && mth <= 12)
{
      Console.WriteLine("Quarter 4");
}



Надеюсь, это вам поможет


Saumya J Pandey

спасибо умайру, но на самом деле этого и не требуется. логика такова
int CurrentQuarter = ((DateTime.Now.Month - 1) / 3) + 1;

Рейтинг:
2

Jani Giannoudis

То Библиотека временных периодов для .NET включает в себя enum YearQuarter и class Quarter:

// ----------------------------------------------------------------------
public void YearQuartersSample()
{
  Year year = new Year( 2012 );
  ITimePeriodCollection quarters = year.GetQuarters();
  Console.WriteLine( "Quarters of Year: {0}", year );
  // > Quarters of Year: 2012; 01.01.2012 - 31.12.2012 | 365.23:59
  foreach ( Quarter quarter in quarters )
  {
    Console.WriteLine( "Quarter: {0}", quarter );
  }
  // > Quarter: Q1 2012; 01.01.2012 - 31.03.2012 | 90.23:59
  // > Quarter: Q2 2012; 01.04.2012 - 30.06.2012 | 90.23:59
  // > Quarter: Q3 2012; 01.07.2012 - 30.09.2012 | 91.23:59
  // > Quarter: Q4 2012; 01.10.2012 - 31.12.2012 | 91.23:59

} // YearQuartersSample


Рейтинг:
0

Evgeni Kovalev

Самое простое решение-проверить остаток. Литье происходит автоматически.

int thisMonth = DateTime.Now.Month;
int monthsInOneQuarter = 3;
int quarter = 0;

if (thisMonth % monthsInOneQuarter > 0)
{
  quarter = thisMonth / monthsInOneQuarter + 1;
}
else
{
  quarter = thisMonth / monthsInOneQuarter ;
}

System.Console.WriteLine("The month is from the " + quarter + ". quarter");


Рейтинг:
0

Surfplank

Компактный и легкий для понимания. (требуется по крайней мере C# 7 из-за ValueTuple)

public static class DateExtensions
{
  public static (int Year, int Quarter) GetQuarterInfo(this DateTime value)
  {
    var quarter = (value.Month + 2) / 3;

    return (value.Year, quarter);
  }
}