String.Format 不适用于日期
String.Format is not working on dates
我正在执行一个 sql 查询并将其存储在一个数据集中,从那里我发送了一封电子邮件,一切都按预期进行,除了这次附加到日期 12:00:00 Am,它在电子邮件中看起来真的很奇怪,我知道发生这种情况是因为该列的数据类型是日期并且它附加的对象将其存储为日期时间并因此重置为午夜但我正在查询 sql 直接和从数据表中检索值,但它仍然附加了时间。无论如何要解决这个问题,我尝试了以下但它不会工作:
string conn = ConfigurationManager.ConnectionStrings["WorkOrderConnectionString3"].ToString();
SqlConnection sqlconn = new SqlConnection(conn);
cmd.Connection = sqlconn;
sqlconn.Open();
cmd.CommandType = CommandType.Text;
String getdatasql = "SELECT WorkOrderNum, Requestor, Date, Department, CompletionDate, MachineDescription, MachineLocation," +
"[Type of Work Order], [Work Required], [WorkPerformed / PartsUsed], [Work Completed By :], [Maint. Supv. Approval]," +
" [Work Comp Date], [Supv Approval Date], Status, [Maint. Supv. Approval Date]" +
"FROM Master WHERE ([Type of Work Order] = N'General') AND (WorkOrderNum = @rockbottom) AND Status = 'Complete' ORDER BY WorkOrderNum DESC";
cmd.CommandText = getdatasql;
cmd.Parameters.AddWithValue("@rockbottom", TextBox10.Text);
SqlDataAdapter getdata = new SqlDataAdapter(cmd);
DataSet ds1 = new DataSet();
showdata.Fill(ds1);
string WorkOrderNum = ds1.Tables[0].Rows[0]["WorkOrderNum"].ToString();
string Requestor = ds1.Tables[0].Rows[0]["Requestor"].ToString();
string Date = ds1.Tables[0].Rows[0]["Date"].ToString();
String date = String.Format("{0:MM/d/yyyy}", Date);
cmd.ExecuteNonQuery();
当我进行调试时,我得到了这个:
在我的电子邮件中,它看起来像这样:
尝试了解决方案仍然有时间:
成功了:)
这是问题所在:
string Date = ds1.Tables[0].Rows[0]["Date"].ToString();
您的 Date
变量已经是一个字符串,因此尝试将其格式化为 DateTime
是行不通的。你想要这样的东西:
DateTime Date = (DateTime) ds1.Tables[0].Rows[0]["Date"];
...尽管我建议不要使用名为 Date
的局部变量,尤其是在作用域中还有一个名为 date
的变量...
我正在执行一个 sql 查询并将其存储在一个数据集中,从那里我发送了一封电子邮件,一切都按预期进行,除了这次附加到日期 12:00:00 Am,它在电子邮件中看起来真的很奇怪,我知道发生这种情况是因为该列的数据类型是日期并且它附加的对象将其存储为日期时间并因此重置为午夜但我正在查询 sql 直接和从数据表中检索值,但它仍然附加了时间。无论如何要解决这个问题,我尝试了以下但它不会工作:
string conn = ConfigurationManager.ConnectionStrings["WorkOrderConnectionString3"].ToString();
SqlConnection sqlconn = new SqlConnection(conn);
cmd.Connection = sqlconn;
sqlconn.Open();
cmd.CommandType = CommandType.Text;
String getdatasql = "SELECT WorkOrderNum, Requestor, Date, Department, CompletionDate, MachineDescription, MachineLocation," +
"[Type of Work Order], [Work Required], [WorkPerformed / PartsUsed], [Work Completed By :], [Maint. Supv. Approval]," +
" [Work Comp Date], [Supv Approval Date], Status, [Maint. Supv. Approval Date]" +
"FROM Master WHERE ([Type of Work Order] = N'General') AND (WorkOrderNum = @rockbottom) AND Status = 'Complete' ORDER BY WorkOrderNum DESC";
cmd.CommandText = getdatasql;
cmd.Parameters.AddWithValue("@rockbottom", TextBox10.Text);
SqlDataAdapter getdata = new SqlDataAdapter(cmd);
DataSet ds1 = new DataSet();
showdata.Fill(ds1);
string WorkOrderNum = ds1.Tables[0].Rows[0]["WorkOrderNum"].ToString();
string Requestor = ds1.Tables[0].Rows[0]["Requestor"].ToString();
string Date = ds1.Tables[0].Rows[0]["Date"].ToString();
String date = String.Format("{0:MM/d/yyyy}", Date);
cmd.ExecuteNonQuery();
当我进行调试时,我得到了这个:
在我的电子邮件中,它看起来像这样:
尝试了解决方案仍然有时间:
成功了:)
这是问题所在:
string Date = ds1.Tables[0].Rows[0]["Date"].ToString();
您的 Date
变量已经是一个字符串,因此尝试将其格式化为 DateTime
是行不通的。你想要这样的东西:
DateTime Date = (DateTime) ds1.Tables[0].Rows[0]["Date"];
...尽管我建议不要使用名为 Date
的局部变量,尤其是在作用域中还有一个名为 date
的变量...