字符串未被识别为有效的日期时间 [从日期时间中删除时间]
本文关键字:时间 日期 删除 识别 有效 字符串 | 更新日期: 2023-09-27 18:32:16
我正在从我的sql服务器中检索一个日期,即2016-01-06(年-月-日)到字符串中。sql 格式为日期。而不是只得到 2016-01-06,我将得到 1/6/2016/(月/日/年)上午 12:00:00 。现在我要做的是删除时间并将日期转换为 dd/M/yyyy 格式。我已经遵循了其他问题中的所有示例,但我会得到"字符串未被识别为有效的日期时间"我错过了任何步骤或我做错了。
protected void btnUser_Click(object sender, EventArgs e)
{
{
string Name = cmbName.Text;
string start = "";
SqlConnection myConn = new SqlConnection("Data Source=localhost;" + "Initial Catalog=IBBTS_DB; Integrated Security =SSPI");
SqlCommand retrieveStart_DateCmd = new SqlCommand("SELECT startDate FROM testSet where TS_ID = 121 ;", myConn);
SqlDataReader reader6 = retrieveStart_DateCmd.ExecuteReader();
while (reader6.Read())
{
start = (reader6.GetValue(0).ToString());
}
reader6.Close();
DateTime dateTime = DateTime.ParseExact(start, "dd/MM/yyyy", CultureInfo.InvariantCulture);
}
}
SQL
以 SQL 的标准格式存储datetime
数据类型日期。但是,当您从 SQL 检索datetime
数据类型时,datetime
结果将转换为 C# 中的DateTime
结构。
由于检索到的值是一个DateTime
对象,因此您无需转换为字符串,然后将其解析出来。这样做会使检索该datetime
的转换工作加倍。
试试这个例子。
protected void btnUser_Click(object sender, EventArgs e)
{
{
string Name = cmbName.Text;
DateTime start = default(DateTime);
SqlConnection myConn = new SqlConnection("Data Source=localhost;" + "Initial Catalog=IBBTS_DB; Integrated Security =SSPI");
SqlCommand retrieveStart_DateCmd = new SqlCommand("SELECT startDate FROM testSet where TS_ID = 121 ;", myConn);
SqlDataReader reader6 = retrieveStart_DateCmd.ExecuteReader();
while (reader6.Read())
{
start = (DateTime)reader6[0];
}
reader6.Close();
string myFormattedString = start.ToString("dd/MM/yyyy");
}
}
既然你知道该字段将是一个日期,而且它只是一个字段,你能只使用 GetDateTime 吗?
DateTime dateTime = Reader6.GetDateTime(0)
这可能会让您跳过字符串转换。显然,如果可能的话,请先检查 dbNull。
避免使用ToString()
- 你正在降低SQL Server发送给你的类型。 您应该能够使用 GetDateTime(0)
而不是 GateValue(0)
检索值。 这将使您能够更轻松地操纵值。
C# 不附带内置的 Date
类型,只有 DateTime
. 因此,这就是呈现给您的内容。 获得DateTime
后,您可以使用正常的格式化操作来根据需要对其进行格式化。
尝试按以下格式分配日期:
protected void btnUser_Click(object sender, EventArgs e)
{
string Name = cmbName.Text, start = string.empty;
SqlConnection myConn = new SqlConnection("Data Source=localhost;" + "Initial Catalog=IBBTS_DB; Integrated Security =SSPI");
SqlCommand retrieveStart_DateCmd = new SqlCommand("SELECT startDate FROM testSet where TS_ID = 121 ;", myConn);
SqlDataReader reader6 = retrieveStart_DateCmd.ExecuteReader();
while (reader6.Read())
{
start = (reader6.GetValue(0).ToString());
}
reader6.Close();
DateTime dateTime = DateTime.ParseExact(start, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);//DateTime.ParseExact(start, "dd/MM/yyyy", CultureInfo.InvariantCulture);
}
并在您的 Web.config 文件下添加此
<configuration>
<system.web>
<globalization culture="en-US" uiCulture="en-US" />
</system.web>