Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字符串。格式在日期上不起作用_C#_Asp.net_Date_Dataset_String.format - Fatal编程技术网

C# 字符串。格式在日期上不起作用

C# 字符串。格式在日期上不起作用,c#,asp.net,date,dataset,string.format,C#,Asp.net,Date,Dataset,String.format,我正在执行一个sql查询并将其存储在一个数据集中,从那里我发送了一封电子邮件,一切正常,除了这段时间附加到12:00:00 am的日期,它在电子邮件上看起来真的很奇怪,我知道发生这种情况是因为该列的数据类型是date,它附加到的对象将其存储为datetime,因此重置为午夜,但我直接查询sql并从datatable检索值,但它仍然附加了时间。无论如何,要解决此问题,我尝试了以下方法,但无效: string conn = ConfigurationManager.ConnectionStrings

我正在执行一个sql查询并将其存储在一个数据集中,从那里我发送了一封电子邮件,一切正常,除了这段时间附加到12:00:00 am的日期,它在电子邮件上看起来真的很奇怪,我知道发生这种情况是因为该列的数据类型是date,它附加到的对象将其存储为datetime,因此重置为午夜,但我直接查询sql并从datatable检索值,但它仍然附加了时间。无论如何,要解决此问题,我尝试了以下方法,但无效:

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
的变量…

这就是问题所在:

string Date = ds1.Tables[0].Rows[0]["Date"].ToString();
您的
Date
变量已经是一个字符串,因此尝试将其格式化为
DateTime
是行不通的。你想要的是:

DateTime Date = (DateTime) ds1.Tables[0].Rows[0]["Date"];

。。。尽管我还是建议不要使用名为
Date
的局部变量,尤其是在作用域中使用名为
Date
的变量…

@Greg:不,这不会有帮助。注意
Date
@Greg:No的类型,
ds1的实际值。表[0]。行[0][“Date”]
可能是
DateTime
。。。但是OP正在调用
ToString
。如果需要
DataRow
中的
DateTime
-字段,请使用
DateTime dt=ds1.Tables[0]。Rows[0]。field(“Date”)
。不要摆弄琴弦。然后可以使用
dt.ToString(“MM/d/yyy”,CultureInfo.InvariantCulture)
@Greg:这是
ds1.Tables[0].Rows[0][“Date”]
的编译时类型,但如果这是执行时类型,则其中没有任何信息。这就是我为什么要谈论“实际价值”。@JonSkeet你是对的,谢谢你的澄清。@Greg:不,那没用。注意
Date
@Greg:No的类型,
ds1的实际值。表[0]。行[0][“Date”]
可能是
DateTime
。。。但是OP正在调用
ToString
。如果需要
DataRow
中的
DateTime
-字段,请使用
DateTime dt=ds1.Tables[0]。Rows[0]。field(“Date”)
。不要摆弄琴弦。然后可以使用
dt.ToString(“MM/d/yyy”,CultureInfo.InvariantCulture)
@Greg:这是
ds1.Tables[0].Rows[0][“Date”]
的编译时类型,但如果这是执行时类型,则其中没有任何信息。这就是为什么我谈论“实际价值”。@JonSkeet你是对的,谢谢你的澄清。离题了,但我注意到你得到了800k代表。恭喜!离题了,但我注意到你得到了800k代表。恭喜!