Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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_Ado.net - Fatal编程技术网

从数据行(C#)检索日期时间值

从数据行(C#)检索日期时间值,c#,datetime,ado.net,C#,Datetime,Ado.net,如何从行中获取C中的DateTime值,当前代码给了我错误信息 感谢您的帮助,数据来自进度数据库: foreach (DataRow r in ds.Tables[0].Rows) { string prodCode = r["PRD-CDE"].ToString(); statCode = r["STAT"].ToString(); DateTime firstIssueDate = (DateTime)(r["FISS"]); DateTime endIss

如何从行中获取C中的
DateTime
值,当前代码给了我错误信息 感谢您的帮助,数据来自进度数据库:

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...*/}
}
获取日期转换和PAR有两种方法,谢谢大家的帮助

最终工作代码片段:

foreach (DataRow r in ds.Tables[0].Rows)
            {
                string prodCode = r["PRD-CDE"].ToString(),statCode = r["STAT"].ToString();
               // r.<DateTime?>("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)
                        {
foreach(ds.Tables[0].行中的数据行r)
{
字符串prodCode=r[“PRD-CDE”].ToString(),statCode=r[“STAT”].ToString();
//r.(“FIS”);
如果(r[“FISS”!=DBNull.Value)
{
DateTime firstIssueDate=Convert.ToDateTime(r[“FISS”]);
如果(r[“EISS”!=DBNull.Value)
{
DateTime endIssueDate=DateTime.Parse(r[“EISS”].ToString());
如果(endIssueDate>DateTime.Now)
{

如果行返回该索引的字符串,我建议使用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

作为辅助答案,您还可以使用静态函数Convert.ToDateTime

这只是一个猜测,但是如果数据库中的相应类型是DateTime,您是否可以检查该列是否可以为空

如果是这样,您可能需要执行检查
r[“column”]==DBNull.Value
,然后将其传递给可为空的DateTime?字段

甚至更简单:

row.Field<DateTime?>("column")
行字段(“列”)
如果不是,那么是的,Convert.ToDateTime()或其他东西应该可以完成

编辑:

我在那里看到了您的最终代码,但您是否有机会这样做:

DateTime? firstIssueDate = r.Field<DateTime?>("fiss"); 
DateTime? endIssueDate = r.Field<DateTime?>("eiss"); 

if (firstIssueDate.HasValue && endIssueDate.HasValue) 
{ 
    firstIssueDate.Value // blah blah 
    endIssueDate.Value // blah blah 
}
DateTime?firstIssueDate=r.Field(“FIS”);
日期时间?endIssueDate=r.字段(“EIS”);
if(firstIssueDate.HasValue&&endIssueDate.HasValue)
{ 
firstIssueDate.Value//blah blah
endIssueDate.Value//blah blah
}
DateTime.Parse(r[“FISS”].ToString())是一种方法,但它会抛出一个“字符串未被识别为有效的DateTime”错误。能否在r[“FISS”]列中显示实际字符串,这可能是一个国际化问题

foreach (DataRow r in ds.Tables[0].Rows)
{
    string prodCode = r["PRD-CDE"].ToString();
    string statCode = r["STAT"].ToString();
    DateTime firstIssueDate = DateTime.Parse((r["FISS"]).ToString()); 
    DateTime endIssueDate = DateTime.Parse((r["EISS"]).ToString());
    if(endIssueDate > DateTime.Now)
    { /*do some thing...*/}
    else {/*user invalid...*/}
}

这应该可以编译,并且可能对您有用。虽然它肯定不会执行您应该对生产代码执行的任何错误检查。还可以查看DateTime.TryParse,您可以查看添加IFormatProvider以确保格式按预期进行分析。

如果您有一个具有特殊格式的DateTime字符串(不是任何标准的.NET日期时间格式)如果需要转换为.NET日期时间类型,可以使用
DateTime.ParseExact()
方法

有关更多详细信息(包括示例),请参见


如果您有多种格式需要解析,请尝试

首先,执行r[“FISS”].GetType()并将其打印到控制台(或暂停并在调试器中查看)。如果它说这是一个字符串,则上面的大多数建议都会有帮助。如果它说了其他内容,请返回并更新您的问题。

如果您想使用默认值(例如DateTime.MinValue),而不是null(DateTime?)或DBNull,您可以执行以下操作:

var firstIssueDate = r["FISS"] as DateTime? ?? DateTime.MinValue;
var endIssueDate = r["EISS"] as DateTime? ?? DateTime.MinValue;

您收到的任何错误消息都可能会有所帮助。数据集中列的数据类型是什么?它是SQL DateTime吗?它是一个正在进行的日期列数据库我知道这很晚,但如果它是数据库中的日期列,则我希望对象已经是日期时间,因此不需要转换。错误:参数“1”:无法转换为在键入以下代码后,将m'object'改为'string':DateTime firstIssueDate=DateTime.Parse(r[“FISS”]);甚至尝试过:DateTime firstIssueDate=DateTime.Parse(r[“FISS”].ToString());错误:ex={“string未被识别为有效的DateTime。”}您有没有办法向我们展示r[“FISS”]的内容。ToString()看起来像?可能是有人提到的可空类型。如果(r[“fis”]==DBNull.Value)这一个成功了是的,这是一个空值,仍在测试:)谢谢我看到了你的代码,并在“编辑”部分添加了一些建议。你觉得怎么样?我从未见过使用的.Field方法..尼斯+1