programing

한 달의 마지막 날을 어떻게 얻을 수 있습니까?

muds 2023. 5. 11. 21:59
반응형

한 달의 마지막 날을 어떻게 얻을 수 있습니까?

C#에서 해당 달의 마지막 날을 어떻게 찾을 수 있습니까?

예를 들어, 날짜가 1980년 3월 8일인 경우 8월의 마지막 날(이 경우 31)은 어떻게 얻을 수 있습니까?

이 달의 마지막 날은 31을 반환합니다.

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

만약 당신이 날짜를 원한다면, 한 달과 일 년을 고려하면, 이것은 거의 맞는 것 같습니다.

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

다음 달 1일부터 하루 차감:

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

또한 12월에도 작업을 위해 필요한 경우:

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

다음 코드로 모든 달의 마지막 날짜를 찾을 수 있습니다.

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);
// 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));

한 줄의 코드로 해당 달의 마지막 날을 찾을 수 있습니다.

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

다음과 같이 DateTime을 확장할 수 있습니다.

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);
    }
}

다음과 같이 사용합니다.

DateTime today = DateTime.Now;

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

부터DateTimePicker:

첫 번째 날짜:

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

마지막 날짜:

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

다음 달의 마지막 날짜가 표시됩니다.Add Months(x)에서 반환할 월을 추가하거나 빼서 반환할 월을 추가할 수 있습니다.

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

05/07/2021 예시

날짜 시간.지금. 데이;

결과: 5

날짜 시간.이제 월(+1)을 추가합니다.Add Days(-DateTime).지금. 낮).ToString("yyyy-MM-dd");

결과: 2021/07/31

특정 일정관리 및 확장 방법에서 월의 마지막 날을 가져오려면 다음과 같이 하십시오.

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;
}

종료 날짜를 가져오는 또 다른 방법:

    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;
    }

매달 마지막 날에만 코드를 발사하고 싶었어요 이렇게 간단하죠

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

C#에 대해서는 잘 모르지만 API를 쉽게 얻을 수 있는 방법이 없다면 논리를 따르는 것이 좋습니다.

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

물론, 그것은 당신이 그런 유형의 날짜 수학을 가지고 있다고 가정합니다.

이 공식은 세 번째 달의 마지막 날(이 예에서)을 얻기 위한 간단한 솔루션으로서의 @RHSeeger의 생각을 반영합니다(그 달의 첫 번째 날에서 1일을 뺀 셀 A1 + 4의 날짜).

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

매우 정확하고, 윤년의 2월을 포함합니다 :)

언급URL : https://stackoverflow.com/questions/2493032/how-do-i-get-the-last-day-of-a-month

반응형