C# 将日期时间转换为字符串

C# 将日期时间转换为字符串,c#,datetime,time,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); 现在我想将这个字符串变量转换为日期时间属性,我已经使用下面的语句完成了这个转换 string s

我有一个字符串变量
st
,我使用这个语句将这个字符串变量分配给输出表单数据表

string st;

if(dt!=null)
{
    if(dt.rows.count> 0)
    {
        st = dt.Rows[3]["timeslot_StartTime"].ToString();
    }
}
DateTime pt1 = DateTime.Parse(st);
现在我想将这个字符串变量转换为日期时间属性,我已经使用下面的语句完成了这个转换

string st;

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

但它在st处显示错误,即
使用未分配的局部变量“st”

st
初始化为null或string.Empty

string st = null;

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

st
初始化为null或string。为空

string st = null;

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

st
一个初始值,例如

string st = String.Empty;

st
一个初始值,例如

string st = String.Empty;

试着用这种方式定义st

string st = "" 

试着用这种方式定义st

string st = "" 
试着这么做

string st = null;
在解析之前检查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);
}

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

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
当然,如果您正在从数据表中提取值,那么如果该值已经作为日期存储在表中,那么请忘记
ToString()
和解析

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

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

或者

  • 初始化变量时为其指定默认值
    • 可以解析的东西,或者记住在尝试解析之前包含一个检查
  • 或者尝试在从数据表中检索值的位置将其解析为
    DateTime
当然,如果您正在从数据表中提取值,那么如果该值已经作为日期存储在表中,那么请忘记
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
        }

您需要初始化字符串。现在,任何初始化或赋值都在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
        }

在你的代码中,你把给出错误的那一行放在哪里了?给我们所有相关的代码。您的
st
似乎超出了范围。您在代码中的哪一行输入了错误?请提供所有相关代码。您的
st
可能超出范围。您好,如何检查当前时间是否在两个给定时间之间,而这两个时间都在datetime中,而不是在datetime中string@user,请不要在评论中提问。如果你有与原作相关的东西,请将其添加到原作中。然而,你这里的问题似乎是一个不同的逻辑,所以它应该是它自己的新问题。但为了让您开始,请比较给定日期是否大于开始日期和小于结束日期。例如
bool isBetween=(startDate hi如何检查当前时间是否在两个给定时间之间,而这两个时间是在datetime中,而不是在datetime中string@user,请不要在评论中提问。如果你有与原文相关的问题,请将其添加到原文中。但是,你在这里提出的问题似乎是一个不同的逻辑,因此它应该是它自己的新问题。但是或者为了开始,比较给定日期是否大于开始日期和小于结束日期