将日期时间转换为字符串



我有一个字符串变量st,我已经通过使用以下语句将该字符串变量分配给输出表单数据表

string st;
if(dt!=null)
{
    if(dt.rows.count> 0)
    {
        st = dt.Rows[3]["timeslot_StartTime"].ToString();
    }
}

现在我想将这个字符串变量转换为日期-时间属性,我已经使用下面的语句完成了这个操作

DateTime pt1 = DateTime.Parse(st);

但在st表示CCD_ 2。

st初始化为null或字符串。空

string st = null;

为了更安全起见,在解析之前请检查st是否为null。

st一个初始值,例如

string st = String.Empty;

尝试以这种方式定义st

string st = "" 

尝试执行

string st = null;

在解析之前检查st是否为空

可能您在与分配变量的范围不同的范围中使用该变量,如

string st;
if (condition) {
    st = dt.Rows[3]["timeslot_StartTime"].ToString();
}
DateTime pt1 = DateTime.Parse(st);

因此,st并不总是初始化的(只有在验证了if条件的情况下才会初始化)。改为尝试

string st;
if (condition) {
    st = dt.Rows[3]["timeslot_StartTime"].ToString();
    DateTime pt1 = DateTime.Parse(st);
}

只能在if逻辑中分配st。如果您试图在这些块之外使用st,您将遇到"取消分配"错误。

任一

  • 初始化变量时为其指定默认值
    • 可以解析的东西,或者在尝试解析之前记得包含一个检查
  • 或者尝试在从数据表中检索值时将其解析为DateTime

当然,假设您从DataTable中提取值,如果该值已作为日期存储在表中,则完全忘记ToString()和解析。

DateTime date = (DateTime)dt.Rows[x]["ColumnName"];

您需要初始化字符串。现在,if块中正在执行任何初始化或赋值。编译器正在检测到这一点,并认为它可能从未初始化。

string st = string.Empty;

顺便说一句,在对话中使用姐妹方法TryParse()要安全得多,以确保不会因为无效的格式问题而引发任何意外的异常。如果转换成功,该方法将返回true,这会使其看起来很干净:

        if (dt!=null)
        {
           if(dt.rows.count> 0)
           {
              st = dt.Rows[3]["timeslot_StartTime"].ToString();
           }
        }
        DateTime dt = DateTime.MinValue;
        if (DateTime.TryParse(st, out dt))
        {
            //was successful and do something here
        }

相关内容

  • 没有找到相关文章

最新更新