C# 使用日期时间

C# 使用日期时间,c#,asp.net,datetime,C#,Asp.net,Datetime,我有DataTable,其中一列是DataStart,typeof(DateTime)。 我尝试再添加一列,在其中计算一些日期。 就像这样: DataColumn Deadline = table.Columns.Add("Deadline", typeof(DateTime)); foreach (DataRow row in table.Rows) { row["Deadline"] = DataTime.Now.AddDays(10) - (DateTime)(row["DateSta

我有
DataTable
,其中一列是
DataStart,typeof(DateTime)
。 我尝试再添加一列,在其中计算一些日期。 就像这样:

DataColumn Deadline = table.Columns.Add("Deadline", typeof(DateTime));
foreach (DataRow row in table.Rows)
{
  row["Deadline"] = DataTime.Now.AddDays(10) - (DateTime)(row["DateStart"]);
}
但我在运行应用程序时遇到了一些错误:

无法将“System.TimeSpan”类型的对象强制转换为 “System.IConvertible”。无法存储在截止日期中 柱类型应为DateTime


我必须如何修复它?

因为您的
DateTime.Now.AddDays(10)-(DateTime)(row[“DateStart”])
返回
TimeSpan
,而不是
DateTime

如果您想在
DeadLine
列中保持时间间隔,您可能需要更改它的类型,如

DataColumn Deadline = table.Columns.Add("Deadline", typeof(TimeSpan));
如果您想在
DateStart
的时间段
10天,您可以使用它,如下所示:


如果将两个日期时间相加或相减,则结果为
TimeSpan
,即两者之间的跨度。你想从
日期开始时间中减去10天,是吗?使用
DateTime.TimeOfDay

row["Deadline"] = DateTime.Today.AddDays(10) + row.Field<DateTime>("DateStart").TimeOfDay;
row[“Deadline”]=DateTime.Today.AddDays(10)+row.Field(“DateStart”).TimeOfDay;

DateTime
+
TimeSpan
的结果是
DateTime
。请注意,我还使用了
DateTime.Today.AddDays(10)
而不是
DateTime.Now.AddDays(10)
来截断时间部分。

您可以更改以下内容:

row["Deadline"] = DataTime.Now.AddDays(10) - (DateTime)(row["DateStart"]);
致:


这将在
DateStart
值之前10天创建一个新日期。当前,您正试图使用引发异常的
TimeSpan
设置
截止日期
值。

听起来不粗鲁,但如何修复它在错误消息中有非常清楚的说明。。。“你一定要读这些。”唐克刚是的,我读过了。我阅读了文档。阅读谷歌。但最终我无法解决这个问题,所以回答是这样的。我是否愿意发表评论,至少让我知道我可能错在哪里?
row["Deadline"] = DataTime.Now.AddDays(10) - (DateTime)(row["DateStart"]);
row["Deadline"] = ((DateTime)(row["DateStart"])).AddDays(10);