1. ホーム
  2. c#

[解決済み] 週の始まりのDateTimeを取得するにはどうすればよいですか?

2022-03-18 10:36:34

質問

C#で現在の時刻だけを知って、週の始まり(日曜日と月曜日の両方)を見つけるにはどうすればよいですか?

のようなものです。

DateTime.Now.StartWeek(Monday);

解決方法は?

拡張メソッドを使用します。それがすべての答えなんだから! ;)

public static class DateTimeExtensions
{
    public static DateTime StartOfWeek(this DateTime dt, DayOfWeek startOfWeek)
    {
        int diff = (7 + (dt.DayOfWeek - startOfWeek)) % 7;
        return dt.AddDays(-1 * diff).Date;
    }
}

これは、次のように使うことができます。

DateTime dt = DateTime.Now.StartOfWeek(DayOfWeek.Monday);
DateTime dt = DateTime.Now.StartOfWeek(DayOfWeek.Sunday);