Как найти последний день месяца

How can I find the last day of the month in C#?

For example, if I have the date 03/08/1980, how do I get the last day of month 8 (in this case 31)?

Peter Mortensen's user avatar

asked Mar 22, 2010 at 14:39

Gold's user avatar

3

The last day of the month you get like this, which returns 31:

DateTime.DaysInMonth(1980, 08);

answered Mar 22, 2010 at 14:43

Oskar Kjellin's user avatar

Oskar KjellinOskar Kjellin

21.1k10 gold badges54 silver badges93 bronze badges

2

var lastDayOfMonth = DateTime.DaysInMonth(date.Year, date.Month);

answered Mar 22, 2010 at 14:43

Mark's user avatar

MarkMark

9,9267 gold badges37 silver badges39 bronze badges

1

If you want the date, given a month and a year, this seems about right:

public static DateTime GetLastDayOfMonth(this DateTime dateTime)
{
    return new DateTime(dateTime.Year, dateTime.Month, DateTime.DaysInMonth(dateTime.Year, dateTime.Month));
}

Peter Mortensen's user avatar

answered Jul 15, 2011 at 14:53

Ian G's user avatar

Ian GIan G

29.3k21 gold badges78 silver badges92 bronze badges

0

Substract a day from the first of next month:

DateTime lastDay = new DateTime(MyDate.Year,MyDate.Month+1,1).AddDays(-1);

Also, in case you need it to work for December too:

DateTime lastDay = new DateTime(MyDate.Year,MyDate.Month,1).AddMonths(1).AddDays(-1);

Peter Mortensen's user avatar

answered Mar 22, 2010 at 14:42

Radu094's user avatar

Radu094Radu094

27.9k16 gold badges62 silver badges80 bronze badges

1

You can find the last date of any month by this code:

var now = DateTime.Now;
var startOfMonth = new DateTime(now.Year, now.Month, 1);
var DaysInMonth = DateTime.DaysInMonth(now.Year, now.Month);
var lastDay = new DateTime(now.Year, now.Month, DaysInMonth);

Peter Mortensen's user avatar

answered Mar 21, 2013 at 9:52

mash's user avatar

mashmash

1091 silver badge3 bronze badges

// Use any date you want, for the purpose of this example we use 1980-08-03.
var myDate = new DateTime(1980,8,3);
var lastDayOfMonth = new DateTime(myDate.Year, myDate.Month, DateTime.DaysInMonth(myDate.Year, myDate.Month));

answered Oct 12, 2018 at 13:05

Jasper Risseeuw's user avatar

5

You can find the last day of the month by a single line of code:

int maxdt = (new DateTime(dtfrom.Year, dtfrom.Month, 1).AddMonths(1).AddDays(-1)).Day;

Peter Mortensen's user avatar

answered Apr 29, 2013 at 13:51

jithin's user avatar

jithinjithin

931 silver badge2 bronze badges

1

You can extend DateTime as follows;

public static class DateTimeMethods
{
    public static DateTime StartOfMonth(this DateTime date)
    {
        return new DateTime(date.Year, date.Month, 1, 0, 0, 0);
    }

    public static DateTime EndOfMonth(this DateTime date)
    {
        return date.StartOfMonth().AddMonths(1).AddSeconds(-1);
    }
}

and use it as follows;

DateTime today = DateTime.Now;

DateTime startOfMonth = today.StartOfMonth();
DateTime endOfMonth = today.EndOfMonth();

Uwe Keim's user avatar

Uwe Keim

39.3k56 gold badges174 silver badges291 bronze badges

answered Sep 4, 2021 at 5:16

Ibrahim Mohammed's user avatar

From DateTimePicker:

First date:

DateTime first_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, 1);

Last date:

DateTime last_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, DateTime.DaysInMonth(DateTimePicker.Value.Year, DateTimePicker.Value.Month));

answered Jul 5, 2016 at 11:57

Md. Shafiqur Rahman's user avatar

3

This will display the last date of the next month. You can add the month of the year you want to return by adding or substracting it from AddMonths(x)

DateTime.Now.AddMonths(2).AddDays(-DateTime.Now.Day)

answered May 5, 2021 at 16:46

Stefan Taban's user avatar

example on 05/07/2021

DateTime.Now.Day;

Result: 5

DateTime.Now.AddMonths(+1).AddDays(-DateTime.Now.Day).ToString(«yyyy-MM-dd»);

result: 2021/07/31

answered Jul 5, 2021 at 15:00

Gabriel Guzman Rodriguez's user avatar

1

To get last day of a month in a specific calendar — and in an extension method -:

public static int DaysInMonthBy(this DateTime src, Calendar calendar)
{
    var year = calendar.GetYear(src);                   // year of src in your calendar
    var month = calendar.GetMonth(src);                 // month of src in your calendar
    var lastDay = calendar.GetDaysInMonth(year, month); // days in month means last day of that month in your calendar
    return lastDay;
}

answered Sep 10, 2017 at 9:33

shA.t's user avatar

shA.tshA.t

16.5k5 gold badges54 silver badges111 bronze badges

Another way to get end date:

    private static DateTime GetMonthEndDate(DateTime date)
    {
        DateTime endDate = date;
        int endDateMonth = endDate.Month;

        while (endDateMonth == endDate.Month)
            endDate = endDate.AddDays(1);

        endDate = endDate.AddDays(-1);

        return endDate;
    }

answered Jul 24, 2021 at 12:37

Gauravsa's user avatar

GauravsaGauravsa

6,2382 gold badges20 silver badges29 bronze badges

I only wanted to fire code on the last day of every month, it’s a simple as this…

if (DateTime.UtcNow.AddDays(1).Day != 1)
{
    // Tomorrow is not the first...
    return;
}

answered Dec 2, 2021 at 11:40

Kieran O'Sullivan's user avatar

I don’t know C# but, if it turns out there’s not a convenient API way to get it, one of the ways you can do so is by following the logic:

today -> +1 month -> set day of month to 1 -> -1 day

Of course, that assumes you have date math of that type.

answered Mar 22, 2010 at 14:43

RHSeeger's user avatar

RHSeegerRHSeeger

16k7 gold badges51 silver badges41 bronze badges

2

This formula reflects @RHSeeger’s thought as a simple solution to get (in this example) the last day of the 3rd month (month of date in cell A1 + 4 with the first day of that month minus 1 day):

=DATE(YEAR(A1);MONTH(A1)+4;1)-1

Very precise, inclusive February’s in leap years :)

Jeremy Caney's user avatar

Jeremy Caney

7,00461 gold badges48 silver badges76 bronze badges

answered Jan 31, 2021 at 18:36

IamWhoIam's user avatar

1


Последний день месяца определяется с помощью функции

КОНМЕСЯЦА()

.

Если ячейка

А1

содержит дату, то последний день месяца, которому принадлежит эта дата, определяется так (см.

файл примера

):

=КОНМЕСЯЦА(A1;0)

Или другой формулой:

=ДАТА(ГОД(A1);МЕСЯЦ(A1)+1;0)

Первый день месяца определяется в статье

Первый день месяца

.

Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel 2010 Excel 2007 Excel для Mac 2011 Excel Starter 2010 Еще…Меньше

В этой статье описаны синтаксис формулы и использование функции КОНМЕСЯЦА в Microsoft Excel.

Описание

Возвращает порядковый номер последнего дня месяца, отстоящего на указанное количество месяцев от даты, указанной в аргументе «нач_дата». Функция КОНМЕСЯЦА используется для вычисления даты погашения или даты платежа, которая приходится на конец месяца.

Синтаксис

КОНМЕСЯЦА(нач_дата;число_месяцев)

Аргументы функции КОНМЕСЯЦА описаны ниже.

  • нач_дата    — обязательный аргумент. Начальная дата. Даты должны быть введены с использованием функции ДАТА или как результат вычисления других формул и функций. Например, для указания даты 23 мая 2008 года следует воспользоваться выражением ДАТА(2008;5;23). Если ввести даты как текст, это может привести к возникновению проблем.

  • Число_месяцев    — обязательный аргумент. Количество месяцев до или после даты «нач_дата». Положительное значение аргумента «число_месяцев» означает будущие даты; отрицательное значение — прошедшие даты.

    Примечание: Если значение аргумента «число_месяцев» не является целым числом, оно усекается.

Замечания

  • В приложении Microsoft Excel даты хранятся в виде последовательных чисел, что позволяет использовать их в вычислениях. По умолчанию дате 1 января 1900 года соответствует номер 1, а 1 января 2008 года — 39448, так как интервал между этими датами составляет 39 448 дней.

  • Если start_date не является допустимой датой, то EOMONTH возвращает #NUM! значение ошибки #ЗНАЧ!.

  • Если start_date «плюс месяцы» возвращает недействительные даты, то EOMONTH возвращает #NUM! значение ошибки #ЗНАЧ!.

Пример

Скопируйте образец данных из следующей таблицы и вставьте их в ячейку A1 нового листа Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — клавишу ВВОД. При необходимости измените ширину столбцов, чтобы видеть все данные.

Дата

1-янв-11

Формула

Описание

Результат

=КОНМЕСЯЦА(A2;1)

Дата последнего дня месяца, следующего за датой в ячейке А2.

28.02.2011

=КОНМЕСЯЦА(A2;-3)

Дата последнего дня месяца, на три месяца раньше даты в ячейке А2.

31.10.2010

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.

Я постоянно стремлюсь улучшить свои навыки и знания в области SQL. Имея базовые представления о MySQL, при умеренном или интенсивном использовании (и частично с PostgreSQL), я уже некоторое время видел Oracle Database в моих глазах.

Oracle SQL казался мне менее доступным. Я пользователь Linux и обнаружил, что в зависимости от того, какой у вас дистрибутив, установка Oracle SQL — XE Edition — может быть простой или может быть, meh … (По крайней мере, таков был мой опыт.)

Однако в наши дни существует автономная база данных Always Free Oracle Autonomous Database, размещенная на OCI, для которой я недавно зарегистрировал учетную запись.

Имея доступ к 2 бесплатным автономным базам данных Oracle объемом 20 ГБ, я начал свой путь к изучению базы данных Oracle SQL с конечной целью стать сертифицированным разработчиком Oracle SQL, что было моей целью в течение некоторого времени.

Недавно я написал в блоге сообщение MySQL Count Weekday Occurrences, в котором я перенес некоторые концепции функциональности Oracle SQL и Date (вдохновленные этим видео на YouTube) в сопоставимые запросы MySQL. В этом посте я расскажу о небольшом подмножестве функций даты, присутствующих в Oracle SQL, как я это понимаю, с целью определения первого и последнего дня данного месяца. (Примеры в этом посте нацелены на текущий месяц на момент написания: апрель 2021 года).

Функции Oracle SQL Date

Ниже приведены 4 функции даты, которые я буду использовать в следующих примерах запросов:

  • SYSDATE — Предоставляет текущую дату и время ОС (операционной системы), в которой работает / установлена ​​база данных Oracle. (Примечание: SYSDATE не принимает никаких параметров.)
  • LAST_DAY() — возвращает последний день месяца для указанного параметра даты.
  • TRUNC()Округляет значение даты до необязательно указанной модели формата (например, месяц, год и т. Д.)
  • ADD_MONTHS() — принимает 2 параметра: значение даты и число, представляющее месяцы. ADD_MONTHS() возвращает результат значения даты добавления указанного количества месяцев к предоставленному параметру даты.

Первый и последний день текущего месяца

Поскольку SYSDATE предоставляет текущую дату и время, использование их в качестве параметра даты для функции TRUNC(), а модель формата MM (Месяц) возвращает первый день месяца, поскольку TRUNC() округляется в меньшую сторону.

Передача SYSDATE в качестве параметра LAST_DAY() возвращает последний день текущего месяца:

Ниже показаны первый и последний день текущего месяца (апрель 2021 г.) согласно SYSDATE. Эти значения могут быть использованы при дальнейшей обработке данных, если это необходимо (как я сделал в связанной публикации, которую я упомянул выше для MySQL port over).

Первый и последний день следующего месяца

Используя возвращенные результаты запроса, которые у нас есть сейчас, после небольшой работы и еще одну функцию Oracle SQL Date — ADD_MONTHS(), очень легко определить, каковы значения первого и последнего дня следующего месяца. Простая передача числа 1 в качестве количества месяцев в ADD_MONTHS() с вызовом TRUNC(SYSDATE, ‘MM’) в качестве параметра значения DATE возвращает первый день следующего (или следующего) месяца, 01-MAY-21:

Использование ADD_MONTHS(TRUNC(SYSDATE, ‘MM), 1) в качестве параметра значения DATE функции LAST_DAY() также возвращает последний день следующего месяца:

Первый и последний день предыдущего месяца

Как я узнал из книги / руководства по Oracle SQL, которые я читаю, в Oracle SQL нет функции SUBTRACT_MONTHS () DATE. Однако вы можете использовать отрицательное число в качестве 2-го параметра для ADD_MONTHS(), и это количество месяцев будет вычтено из значения 1-го параметра DATE.

Например, используя -1, вы можете точно определить, какие значения первого и последнего дня предыдущих месяцев соответствуют возвращаемому SYSDATE значению DATE:

Чтобы вычислить последний день предыдущего месяца, оберните все выражение ADD_MONTHS(TRUNC(SYSDATE, ‘MM’), -1) как параметр DATE в вызове функции LAST_DAY():

Я надеюсь, что с помощью примеров запросов в этом посте вы лучше понимаете, насколько легко получить значения месяца первого и последнего дня с помощью функций Oracle SQL Date.

Если вы видите ошибки в коде или у вас есть вопросы, не стесняйтесь их комментировать.

Спасибо за чтение. 👍👏🤘

Понравился контент, который вы прочитали в этом посте? Тогда вам обязательно понравятся мои сообщения в моем блоге Digital Owl’s Prose.

Там вы найдете сообщения в блогах о разработке / программировании баз данных SQL и разработке веб-стека LAMP.

Часто в процессе работы с датами возникает необходимость динамического определения даты и последнего дня недели в месяце. Естественно можно просто посмотреть в обычный календарь, но для автоматизации некоторых задач в Excel с помощью формул нужно динамически получить дату последнего месяца особенно в феврале и определить день недели. Ведь у високосного года (366) месяц февраль имеет 29 дней, а в обычном году – 28.

Сколько дней в феврале для любого года и любой даты?

Для начала рассмотрим, как вычислить дату последнего дня февраля месяца для любого года, чтобы определить високосный год или нет:

Сколько дней в феврале.

Анализируя пример на данном рисунке, следует помнить, что данную формулу можно применять для любого месяца, чтобы получить дату последнего дня, а не только для февраля. Иначе она выглядела бы так:

=ДАТА(ГОД(A2);3;0)

Функция ДАТА позволяет генерировать дату на лету с помощью трех аргументов:

  1. Год – можно указать любое число только лишь в диапазоне от 1900 и до 9999.
  2. Месяц – любое положительное или отрицательное число.
  3. День – любое положительное или отрицательное число.

Например, если в третьем аргументе указано число 0 как номер дня, Excel вычислит дату последнего дня из предыдущего месяца. Для наглядного примера составим формулу с числом 0, которая возвращает 29 февраля 2000-го года:

=ДАТА(2000;3;0)

В следующем примере формулы вместо ввода статических значений в первые 2 аргумента функции ДАТА (год и месяц), используется функция ГОД, которая возвращает годы с исходных дат. Аналогично используется функция МЕСЯЦ возвращающая порядковый номер месяца в году из исходной даты. К этому номеру в формуле добавляется число 1. Благодаря чему мы получаем номер следующего месяца. Так как в третьем аргументе стоит число 0, автоматически получаем порядковый номер последнего дня в текущем месяце, который нас интересует.



Какой день недели для последнего дня месяца?

На этом рисунке ниже показано, как вычислить день недели и дату последнего дня февраля для любого года:

Какой день недели.

Формула состоит из двух частей, разделенных соединяющим оператором амперсантом (&» — «&):

  1. В первой части функция ТЕКСТ преобразует числовое значение, которое возвращает функция ДАТА в формат даты. Он указано во втором аргументе функции – «дд.мм.гг»
  2. Во второй части функция ТЕКСТ определяет день недели для исходной даты в первом ее аргументе, с помощью формата ячеек «дддд» указанном во втором аргументе.

Пример использования функции КОНМЕСЯЦА

В новых версиях Excel предусмотрена функция КОНМЕСЯЦА, которая служит альтернативным решением для выше описанной формулы:

КОНМЕСЯЦА.

Благодаря функции КОНМЕСЯЦА можно определять дату для текущего, предыдущего или будущего месяца заполнив лишь только 2 аргумента:

  1. Нач_дата – исходная дата или ссылка на нее.
  2. Число_месяцев – порядковый номер месяца начиная от исходной даты. Может быть любое положительное или отрицательное число. Примеры заполнения аргументов для функции КОНМЕСЯЦА, которая возвращает дату 29 февраля 2000-го года:

=КОНМЕСЯЦА(«01.01.2000»;1)

Если же мы укажем во втором аргументе отрицательное число, тогда функция возвращает нам дату последнего дня для предыдущего месяца:

=КОНМЕСЯЦА(«01.03.2000»;-1)

Разумеется, если мы указываем во втором аргументе число 0 тогда получим необходимое значение даты последнего дня для текущего месяца:

=КОНМЕСЯЦА(«01.02.2000»;0)

Как определить високосный год или нет в Excel?

Чтобы определить високосный год или нет в Excel существует множество решений. Вот несколько из них:

определить високосный год.

При работе с датами особую сложность предоставляет тот факт, что раз в 4-е года количество дней в году составляет 366, тогда как в обычных годах 365. Поэтому иногда приходится воспользоваться вышеописанными примерами и формулами для различных вычислений в Excel.

Понравилась статья? Поделить с друзьями:
  • Как найти песню вопрос ответ
  • Еда подгорела как исправить
  • Как найти отклонения товарооборота
  • Как можно найти дорогу на машине
  • Как найти медиану треугольникп