Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将日期时间改为午夜_C#_Datetime - Fatal编程技术网

C# 将日期时间改为午夜

C# 将日期时间改为午夜,c#,datetime,C#,Datetime,我有以下EffectiveDay,我想把datetime改为午夜 public DateTime EffectiveDate { get; set; } 在屏幕截图中,显示的是2018年2月28日凌晨5:00:00 我想将其更改为2018年2月28日凌晨12:00:00(午夜) 我尝试了以下方法,但没有成功 ClassRoom.WorkOrders.Select(w => w.EffectiveDate).ToList().ForEach(s => s = s.Date); 我

我有以下
EffectiveDay
,我想把datetime改为午夜

public DateTime EffectiveDate { get; set; }

在屏幕截图中,显示的是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);
}

ToList
之后进行
ForEach
赋值不会有帮助,因为您正在设置
s
,这是一个在每次迭代后都会丢弃的参数

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

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

通过将每个工单的
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
也应该可以正常工作。

屏幕截图显示的是凌晨12:00:00。请注意,在.NET中,DateTime始终有一个时间组件。但是,如果选中
TimeOfDay
显示05:00:00 AM,为什么不选择
。选择(w=>w.EffectiveDate.Date)
?或者
。选择(w=>GetDateZeroTime(w.EffectiveDate))
?@Mikemcaughan,因为OP试图通过调用
s=GetDateZeroTime…
,将时间设置回
w.EffectiveDate
。也可以使用DateTime的.Date属性来获得相同的结果,而不是使用您的方法