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属性来获得相同的结果,而不是使用您的方法