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);