如何DateTime
从行中获取C#的值,当前代码给出错误,任何帮助都表示赞赏,数据来自进度数据库:
foreach (DataRow r in ds.Tables[0].Rows) { string prodCode = r["PRD-CDE"].ToString(); statCode = r["STAT"].ToString(); DateTime firstIssueDate = (DateTime)(r["FISS"]); DateTime endIssueDate = (DateTime)(r["EISS"]); if(endIssueDate > DateTime.Now) { /*do some thing...*/} else {/*user invalid...*/} }
获取日期转换和解析有两种方法,谢谢大家的帮助
最终工作代码段:
foreach (DataRow r in ds.Tables[0].Rows) { string prodCode = r["PRD-CDE"].ToString(),statCode = r["STAT"].ToString(); // r.("FISS"); if (r["FISS"] != DBNull.Value) { DateTime firstIssueDate = Convert.ToDateTime(r["FISS"]); if (r["EISS"] != DBNull.Value) { DateTime endIssueDate = DateTime.Parse(r["EISS"].ToString()); if (endIssueDate > DateTime.Now) {
Robert Luong.. 42
这只是猜测,但如果数据库中的相应类型是DateTime,您可以检查该列是否可以为空?
如果是这样,您可能想要检查r["column"] == DBNull.Value
然后将其传递给可以为空的DateTime?领域.
甚至更容易:
row.Field("column")
如果它不是那么是,Convert.ToDateTime()或其他东西应该这样做.
编辑:
我在那里看到你的最终代码,但你有没有机会这样做:
DateTime? firstIssueDate = r.Field("fiss"); DateTime? endIssueDate = r.Field ("eiss"); if (firstIssueDate.HasValue && endIssueDate.HasValue) { firstIssueDate.Value // blah blah endIssueDate.Value // blah blah }
我从来没有见过.Field <>方法.. Nice +1 (2认同)
Chris Thomps.. 12
如果行返回该索引的字符串,我建议使用DateTime.Parse().
string prodCode = r["PRD-CDE"].ToString(),statCode = r["STAT"].ToString(); DateTime firstIssueDate = DateTime.Parse(r["FISS"].ToString()); DateTime endIssueDate = DateTime.Parse(r["EISS"].ToString());
您也可以TryParse
根据自己的需要使用.
这只是猜测,但如果数据库中的相应类型是DateTime,您可以检查该列是否可以为空?
如果是这样,您可能想要检查r["column"] == DBNull.Value
然后将其传递给可以为空的DateTime?领域.
甚至更容易:
row.Field("column")
如果它不是那么是,Convert.ToDateTime()或其他东西应该这样做.
编辑:
我在那里看到你的最终代码,但你有没有机会这样做:
DateTime? firstIssueDate = r.Field("fiss"); DateTime? endIssueDate = r.Field ("eiss"); if (firstIssueDate.HasValue && endIssueDate.HasValue) { firstIssueDate.Value // blah blah endIssueDate.Value // blah blah }
如果行返回该索引的字符串,我建议使用DateTime.Parse().
string prodCode = r["PRD-CDE"].ToString(),statCode = r["STAT"].ToString(); DateTime firstIssueDate = DateTime.Parse(r["FISS"].ToString()); DateTime endIssueDate = DateTime.Parse(r["EISS"].ToString());
您也可以TryParse
根据自己的需要使用.
如果要使用默认值(例如DateTime.MinValue)而不是null(DateTime?)或DBNull,则可以执行以下操作:
var firstIssueDate = r["FISS"] as DateTime? ?? DateTime.MinValue; var endIssueDate = r["EISS"] as DateTime? ?? DateTime.MinValue;