将DateTime更改为午夜

时间:2018-02-28 21:27:48

标签: c# datetime

我有以下EffectiveDay我希望将日期时间更改为午夜。

public DateTime EffectiveDate { get; set; }

enter image description here

在屏幕截图中,它显示 02/28/2018 5:00:00 AM

我想将其更改为 02/28/2018 12:00:00 AM(午夜)

我尝试了以下方法,它没有用

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 个答案:

答案 0 :(得分:4)

ForEach之后执行ToList分配不会有帮助,因为您正在设置s,这是在每次迭代后丢弃的参数。

使用普通的foreach循环进行分配:

foreach (var w in ClassRoom.WorkOrders) {
    w.EffectiveDate = w.EffectiveDate.Date;
    // w.EffectiveDate = GetDateZeroTime(w.EffectiveDate); would also work
}

答案 1 :(得分:2)

这应该通过将每个Work_rders的EffectiveDate属性分配给不知道任何时间的新DateTime对象,从而有效地消除所有WorkOrders的时间:

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也应该可以正常工作。