Установить DateTime в начало месяца

Как установить DateTime в первый месяц в С#?

Ответ 1

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

Ответ 2

Что-то вроде этого будет работать

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

Ответ 3

Немного поздно для вечеринки, но вот метод расширения, который помогло

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

Ответ 4

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

Ответ 5

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

Вы можете использовать что-нибудь еще вместо DateTime.Now

Ответ 6

Это должно быть эффективным и правильным:

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 сбрасывает этот счет до начала месяца.

Ответ 7

Я только что создал несколько методов расширения, основанных на ответе Ника и других на 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 DateTime StartOfWeek(this 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 DateTime StartOfMonth(this DateTime dt)
        {
            var now = DateTime.Now;
            return new DateTime(now.Year, now.Month, 1);
        }

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

Ответ 8

Надеюсь, это поможет вам.

textbox1.Text = "01-" + DateTime.Now.ToString( "MMM-yyyy" );

Ответ 9

var currentDate = DateTime.UtcNow.Date;
var startDateTimeOfCurrentMonth = currentDate.AddDays(-(currentDate.Day - 1));