[c#] DateTime을 월의 시작으로 설정

C #에서 DateTime을 매월 1 일로 설정하려면 어떻게해야합니까?



답변

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


답변

이런 식으로 작동합니다.

DateTime firstDay = DateTime.Today.AddDays(1 - DateTime.Today.Day);


답변

public static DateTime FirstDayOfMonth(this DateTime current)
{
    return current.AddDays(1 - current.Day);
}


답변

파티에 조금 늦었지만 여기에 나를 위해 트릭을 만든 확장 방법이 있습니다.

public static class DateTimeExtensions
{
  public static DateTime FirstDayOfMonth(this DateTime dt)
  {
    return new DateTime(dt.Year, dt.Month, 1);
  }
}


답변

DateTime now = DateTime.Now;
DateTime date = new DateTime(now.Year, now.Month, 1);

DateTime 대신 다른 것을 사용할 수 있습니다.


답변

나는 Nick 답변을 기반으로 일부 확장 방법을 만들고 SO

public static class DateTimeExtensions
{
    /// <summary>
    /// get the datetime of the start of the week
    /// </summary>
    /// <param name="dt"></param>
    /// <param name="startOfWeek"></param>
    /// <returns></returns>
    /// <example>
    /// DateTime dt = DateTime.Now.StartOfWeek(DayOfWeek.Monday);
    /// DateTime dt = DateTime.Now.StartOfWeek(DayOfWeek.Sunday);
    /// </example>
    /// <remarks>http://stackoverflow.com/a/38064/428061</remarks>
    public static System.DateTime StartOfWeek(this System.DateTime dt, DayOfWeek startOfWeek)
    {
        var diff = dt.DayOfWeek - startOfWeek;
        if (diff < 0)
            diff += 7;

        return dt.AddDays(-1 * diff).Date;
    }

    /// <summary>
    /// get the datetime of the start of the month
    /// </summary>
    /// <param name="dt"></param>
    /// <returns></returns>
    /// <remarks>http://stackoverflow.com/a/5002582/428061</remarks>
    public static System.DateTime StartOfMonth(this System.DateTime dt) =>
        new System.DateTime(dt.Year, dt.Month, 1);


    /// <summary>
    /// get datetime of the start of the year
    /// </summary>
    /// <param name="dt"></param>
    /// <returns></returns>
    public static System.DateTime StartOfYear(this System.DateTime dt) =>
         new System.DateTime(dt.Year, 1, 1);

}


답변

이것은 효율적이고 정확해야합니다.

DateTime RoundDateTimeToMonth(DateTime time)
{
    long ticks = time.Ticks;
    return new DateTime((ticks / TimeSpan.TicksPerDay - time.Day + 1) * TimeSpan.TicksPerDay, time.Kind);
}

여기 ticks / TimeSpan.TicksPerDay반환 주어진까지 전체 일의 계산 time- time.Day + 1재설정 월의 시작이 수입니다.