【问题标题】:How to convert datetime in C# [closed]如何在 C# 中转换日期时间 [关闭]
【发布时间】:2018-04-19 17:17:43
【问题描述】:

我必须编辑文本框字段并在数据库中更新。

DateTime d2 = Convert.ToDateTime(txteventdate.Text.ToString());
ds = obj.EditEvents(Id, txtname.Text, d2, txtinfo.Text, txtvenue.Text);
if (ds.Tables[0].Rows.Count >= 0)
{
    lblid.Text = CommonFunctions.DecryptStr(Request.QueryString["id"].ToString());
    txtname.Text = ds.Tables[0].Rows[0]["Name"].ToString();
    txtinfo.Text = ds.Tables[0].Rows[0]["info"].ToString();
    txtvenue.Text = ds.Tables[0].Rows[0]["venue"].ToString();
    txteventdate.Text = ds.Tables[0].Rows[0]["Eventdate"].ToString();
}

文本框值为“2018-04-19 21:34:00.000”。

我尝试了几次我知道的所有可能的解决方案,但它给了我以下错误。

字符串未被识别为有效的日期时间。

提前致谢。

【问题讨论】:

  • 您遇到的错误是什么?
  • 有什么解决办法?什么错误?
  • 我有点厌倦了打字,但是:哪个错误?您尝试了什么导致该错误?
  • 您是否还尝试将 SQL 数据库中的值(因此 SQL 数据库中的日期时间)转换为 C# 文本字段?这就是您将 .Text 属性设置为 Eventdate 的代码中的样子?或者您是否尝试将 .Text c# 表单中的日期/时间值保存到数据库中?
  • 您不能/不应该只从表单字段进行转换,您应该在转换之前进行测试以确保它是有效值,除非您对表单字段进行了一些验证在您进入验证以确保它是日期时间的这一步之前。调试,文本框中的值是什么?

标签: c# asp.net .net sql-server sql-server-2008-r2


【解决方案1】:

以下代码将您的 string 转换为 DateTime 对象。如果您想使用异常安全,请使用DateTime.TryParseExtract

var date = DateTime.ParseExact(ds.Tables[0].Rows[0]["Eventdate"].ToString(), "yyyy-MM-dd HH:mm:ss.fff", System.Globalization.CultureInfo.InvariantCulture);

【讨论】:

    【解决方案2】:

    请不要将“未知用户输入”数据直接转换为其他类型。试试DateTime.TryParse。此外,您可以提前检查是否输入了某些内容:

    if(string.IsNullOrEmpty(txteventdate.Text))
    { 
        MessageBox.Show("Date is necessary!");
        return;
    }
    
    if(!DateTime.TryParse(txteventdate.Text, out DateTime parsedDateTime))
    { 
        MessageBox.Show($"Invalid {txteventdate.Text}!");
        return;
    }
    

    如果您想解析特定的日期格式,您可以检查DateTime.TryParseExact。 msdn文章底部有很好的例子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-05
      相关资源
      最近更新 更多