在ASP.NET中将数据表中的日期转换为dd/mm/yyyy格式

3

我有一个datatable,想要以dd/mm/yyyy的格式获取日期。

目前我的日期格式为

02-01-2012 12:00:00 AM

以下是我的代码

strInvoice_date = dt.Rows[i]["INVOICE_DATE"].ToString();

1
你的 dt 中的 INVOICE_DATE 列类型是什么?它是 DateTime 还是 string - Soner Gönül
4个回答

6

转换并按您的要求表示:

  strInvoice_date = Convert.ToDateTime(dt.Rows[i]["INVOICE_DATE"]).ToString("dd/MM/yyyy");

1
我认为在这种情况下,通常最好使用ParseExact,因为此格式可能不是OP的CurrentCulture的标准日期和时间格式,而Convert.ToDateTime(object)可能会在其中调用ToString方法。但由于OP选择了这个答案,所以对于这种情况无效 :) - Soner Gönül

3

当你调用ToString方法时,dt.Rows[i]["INVOICE_DATE"]返回的是object类型,并且它将调用object.ToString()而不是DateTime.ToString()

如果你的datatable中的INVOICE_DATE列是DateTime类型,你可以显式地将object转换为DateTime类型,并使用dd/MM/yyyy格式和一个正确的区域设置,例如InvariantCulture

var Invoice_date = (DateTime)dt.Rows[i]["INVOICE_DATE"]
                               .ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

如果您的数据表中的INVOICE_DATE列是string类型的,您需要使用object.ToString获取其字符串表示形式,将其解析为Datetime类型,并生成其字符串表示形式。
var Invoice_date = DateTime.ParseExact(dt.Rows[i]["INVOICE_DATE"].ToString(), 
                                      "dd-MM-yyyy hh:mm:ss tt", 
                                       CultureInfo.InvariantCulture)
                          .ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

2
这是更好的方式,为了避免麻烦,定义文化信息非常重要。 - Hugo Yates

0

你需要在ToString()方法中传递所需的日期格式。

 strInvoice_date = Convert.ToDateTime(dt.Rows[i]["INVOICE_DATE"]).ToString("dd/mm/yyyy");

如需了解更多有关日期时间格式的详细信息,请访问


出现错误,提示“没有重载方法接受1个参数”。 - ash060

0

以下代码可以帮助您

strInvoice_date = Convert.ToDateTime(dt.Rows[i]["INVOICE_DATE"].ToString("0:dd/MM/yyyy"));

dt.Rows[i]["INVOICE_DATE"] 返回 object,且没有重载 object.ToString() 以带有 string 参数。 - Soner Gönül
你需要将DateTime列进行转换。strInvoice_date = Convert.ToDateTime(dt.Rows[i]["INVOICE_DATE"].ToString("0:dd/MM/yyyy")); - JENKINS J

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接