developer tip

주의 첫 번째 월요일 날짜를 확인 하시겠습니까?

optionbox 2020. 12. 6. 21:29
반응형

주의 첫 번째 월요일 날짜를 확인 하시겠습니까?


이 질문에 이미 답변이 있습니다.

오늘 날짜를 기준으로 현재 주 월요일 날짜를 얻는 방법을 알고 있는지 궁금합니다.

즉 2009-11-03이 전달되고 2009-11-02가 반환됩니다.

/미디엄


이것은 내가 사용하는 것입니다 (아마도 국제화되지 않았을 것입니다).

DateTime input = //...
int delta = DayOfWeek.Monday - input.DayOfWeek;
DateTime monday = input.AddDays(delta);

Pondium 답변은 경우에 따라 앞으로 검색 할 수 있습니다. 뒤로 검색 만 원하는 경우 다음과 같아야한다고 생각합니다.

DateTime input = //...
int delta = DayOfWeek.Monday - input.DayOfWeek;
if(delta > 0)
    delta -= 7;
DateTime monday = input.AddDays(delta);

이런 식으로 작동합니다.

DateTime dt = DateTime.Now;
while(dt.DayOfWeek != DayOfWeek.Monday) dt = dt.AddDays(-1); 

나는 더 좋은 방법이 있다고 확신합니다 :)


public static class DateTimeExtension
{
    public static DateTime GetFirstDayOfWeek(this DateTime date)
    {
        var firstDayOfWeek = CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek;

        while (date.DayOfWeek != firstDayOfWeek)
        {
            date = date.AddDays(-1);
        }

        return date;
    }
}

여기에 국제. 확장으로 더 유용 할 수 있다고 생각합니다.


는 어때:

CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek

네이티브 솔루션을 사용하지 않는 이유는 무엇입니까?


var now = System.DateTime.Now;

var result = now.AddDays(-((now.DayOfWeek - System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.FirstDayOfWeek + 7) % 7)).Date;

아마 월요일에 당신을 돌아올 것입니다. 월요일이 요일이 아닌 문화를 사용하지 않는 한.


이 시도:

public DateTime FirstDayOfWeek(DateTime date)
{
    var candidateDate=date;
    while(candidateDate.DayOfWeek!=DayOfWeek.Monday) {
        candidateDate=candidateDate.AddDays(-1);
    }
    return candidateDate;
}

EDIT for completeness: overload for today's date:

public DateTime FirstDayOfCurrentWeek()
{
    return FirstDayOfWeek(DateTime.Today);
}

참고URL : https://stackoverflow.com/questions/1665832/get-date-of-first-monday-of-the-week

반응형