将日期时间转换为字符串

时间:2011-06-21 15:23:42

标签: c# datetime time

我有一个字符串变量st,我已使用此语句将此字符串变量分配给输出即将到来的表单数据表

string st;

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

现在我想将此字符串变量转换为日期时间属性,我已使用以下语句完成此操作

DateTime pt1 = DateTime.Parse(st);

但它在st上显示错误use of unassigned local varaible "st"

7 个答案:

答案 0 :(得分:3)

st初始化为null或string.Empty

string st = null;

并且要更安全一面,在解析之前检查st是否为null。

答案 1 :(得分:1)

st一个初始值,例如

string st = String.Empty;

答案 2 :(得分:1)

尝试以这种方式定义st

string st = "" 

答案 3 :(得分:1)

尝试这样做

string st = null;

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

答案 4 :(得分:0)

您可能正在使用与指定范围不同的范围内的变量,例如

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

答案 5 :(得分:0)

您只能在st逻辑中指定if。如果您尝试在这些块之外使用st,则会遇到“取消分配”错误。

无论

  • 初始化时,为变量赋予默认值
    • 可解析的内容,或者在您尝试解析之前记得包括检查
  • 或尝试在从数据表中检索值的位置将其解析为DateTime

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

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

答案 6 :(得分:0)

您需要初始化字符串。现在,正在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
        }