问题与文本框中的日期字段

时间:2016-09-08 07:35:16

标签: c# asp.net

我在数据集列中重新审核了日期值" 9/14/2016 12:00:00 AM" 现在我正在编写以下代码,以便在文本框中显示它

var date = ds.Tables[0].Rows[0]["ExpiryDate"].ToString();
txtExpiryDate.Text = date.ToString();

它在文本框中显示为" 91/42/0161" 我希望它应该以mm / dd / yyyy格式显示日期,即09/14/2016或2016年9月14日。 我无法解决这个问题......请帮忙!!!

5 个答案:

答案 0 :(得分:3)

如果它实际上已经是DateTime,则无需将其转换为字符串,然后返回DateTimeDataRowExtensions.Field在这里派上用场了:

DateTime date = ds.Tables[0].Rows[0].Field<DateTime>("ExpiryDate");

该方法还支持可空类型。因此,如果该列可以为null:

DateTime? dateOrNull = ds.Tables[0].Rows[0].Field<DateTime?>("ExpiryDate");
if(dateOrNull.HasValue) Console.Write(dateOrNull.Value.ToShortDateString());

要获得所需的格式,您可以使用:

string result = date.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture);

答案 1 :(得分:1)

使用它

var date = ds.Tables[0].Rows[0]["ExpiryDate"].ToString("MM/dd/yyyy");
txtExpiryDate.Text = date;

答案 2 :(得分:1)

txtExpiryDate.Text = Convert.ToDateTime(ds.Tables[0].Rows[0]["ExpiryDate"]).ToString("MM/dd/yyyy");

或者

 txtExpiryDate.Text = Convert.ToDateTime(ds.Tables[0].Rows[0]["ExpiryDate"]).ToString("MM/dd/yyyy",CultureInfo.InvariantCulture);

答案 3 :(得分:0)

有很多方法可以做到这一点,在你的情况下,你正在分配没有正确格式的字符串。用我的代码替换你的代码,你会看到它正常工作。

txtExpiryDate.Text = String.Format("{0:MM/dd/yyyy}", Convert.Convert.ToDateTime(ds.Tables[0].Rows[0]["ExpiryDate"]));

答案 4 :(得分:0)

首先,这里给出的任何答案都适合你。这是导致问题的其他因素。

您应该在c#代码中调试值,甚至在客户端脚本中调试此问题。

正如我上面评论的那样:

  

仅取一部分日期值&#34; 9/14/2016 1&#34;,如果我们将/的位置移动到右侧的一个位置,则可以创建显示的值。它将变为91/42/0161(文本框中显示的错误值)。客户端脚本上是否有某些内容正在改变页面上的值。

您应该进行调试以完成工作。