将DateTime设置为月初

lea*_*ing 92 c#

如何在C#中将DateTime设置为本月的第一天?

Nic*_*nes 195

var now = DateTime.Now;
var startOfMonth = new DateTime(now.Year,now.Month,1);
Run Code Online (Sandbox Code Playgroud)

  • 提示:始终将`DateTime.Now`放入变量中,如果要重复使用该值,请使用该变量.如果此代码恰好在午夜左右执行,则很有可能出现错误; 两次调用"DateTime.Now"可能会在午夜的每一侧发生,导致可能出现奇怪的影响. (60认同)
  • @ markthewizard1234主要是因为C#程序员很懒.因此我们只使用var,因为它只有三个字符.还有其他原因,但我觉得这是大多数人这样做的主要原因. (4认同)

V4V*_*tta 40

像这样的东西会起作用

DateTime firstDay = DateTime.Today.AddDays(1 - DateTime.Today.Day);
Run Code Online (Sandbox Code Playgroud)

  • 正如Fredrik Mork评论Nick Jones的回答一样,当你多次使用它时,最好将Datetime存储在一个变量中,以保证在该月的最后一天午夜左右没有问题.所以:今天的DateTime = DateTime.Today; DateTime firstDay = today.AddDays(1-today.Day); (3认同)

Col*_*ury 7

派对有点晚了,但这是一个扩展方法,为我做了诀窍

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


fub*_*ubo 7

public static DateTime FirstDayOfMonth(this DateTime current)
{
    return current.AddDays(1 - current.Day);
}
Run Code Online (Sandbox Code Playgroud)

  • 这更好,因为它保留了时区。 (2认同)