代码之家  ›  专栏  ›  技术社区  ›  casillas

将DateTime更改为午夜

  •  3
  • casillas  · 技术社区  · 8 年前

    我有以下几点 EffectiveDay 我想把datetime改为午夜。

    public DateTime EffectiveDate { get; set; }
    

    enter image description here

    在屏幕截图中,它显示 2018年2月28日上午5:00:00 .

    我想把它改成 2018年2月28日上午12:00:00(午夜)

    我尝试了以下方法,但没有成功

    ClassRoom.WorkOrders.Select(w => w.EffectiveDate).ToList().ForEach(s => s = s.Date);
    

    我也尝试了以下方法,但没有成功。

    ClassRoom.WorkOrders.Select(w => w.EffectiveDate).ToList().ForEach(s => s = GetDateZeroTime(s.Date));
    
    public static DateTime GetDateZeroTime(DateTime date)
    {
      return new DateTime(date.Year, date.Month, date.Day, 0, 0, 0);
    }
    
    2 回复  |  直到 8 年前
        1
  •  4
  •   Sergey Kalinichenko    8 年前

    正在执行 ForEach 之后有作业 ToList 不会有任何帮助,因为您正在设置 s ,一个在每次迭代后丢弃的参数。

    使用普通 foreach 循环执行分配:

    foreach (var w in ClassRoom.WorkOrders) {
        w.EffectiveDate = w.EffectiveDate.Date;
        // w.EffectiveDate = GetDateZeroTime(w.EffectiveDate); would also work
    }
    
        2
  •  2
  •   mm8    8 年前

    通过分配 EffectiveDate 将每个属性 DateTime 不知道任何时间的对象:

    foreach (var workOrder in ClassRoom.WorkOrders)
        workOrder.EffectiveDate = new DateTime(workOrder.EffectiveDate.Year, workOrder.EffectiveDate.Month, workOrder.EffectiveDate.Day, 0, 0, 0);
    

    背景 workOrder.EffectiveDate = workOrder.EffectiveDate.Date 在循环中也可以正常工作。