【问题标题】:How to convert MM/dd/yyyy to yyyy-MM-dd format ASP.Net [duplicate]如何将 MM/dd/yyyy 转换为 yyyy-MM-dd 格式 ASP.Net [重复]
【发布时间】:2018-03-28 08:37:49
【问题描述】:

我的 aspx 页面中有一个 Gridview,它显示来自我的数据库的名称和日期以及一些用于从数据库中搜索数据的文本框。

保存在我的数据库中的日期格式是 yyyy-MM-dd 但我想在 MM/dd/yyyy 的 Gridview 上显示它,所以我用过

SELECT ID, Name, convert(varchar(10), StartDate, 101) as [StartDate] FROM MyDB

实现它。现在不是显示 2016-12-13,而是显示在我的 gridview 上,如下所示:12/13/2016

现在我的问题是,当我使用文本框使用日期过滤 Gridview 时,键入的日期格式应为 yyyy-MM-dd 以便显示结果。这就是为什么我正在考虑将在文本框中输入的 MM/dd/yyyy 转换为 yyyy-MM-dd

所以当我输入 12/13/2016 时,它将被转换为 2016-12-13 然后将其添加到我的 SQLCommand 中。

编辑

我忘了说我转换日期的原因。那是因为即使保存在数据库中的数据只是日期,它也会在 Gridview 中显示时间。所以没有转换,它看起来像这样:5/12/2016 12:00:00 AM

【问题讨论】:

  • 您的数据库中的StartDate 列是什么类型?
  • 如果您从数据库中检索作为 DateTime 的值并显示它,它将自动调整为您所在的当前选择的语言环境。此外,如果您从模型中获得有效的 DateTime,则在使用 Entity Framework 或 SqlCommand AddParameter 时无需担心。所以我建议采用“日期时间”方式——因为每个不同的网络本地显示都可能导致问题。
  • 我认为获取日期时间会更好,因为它存储在数据库中,并且只在显示时进行转换。这样您就可以灵活地代表。
  • @PauGacusan 阅读了副本。和GridView Examples for ASP.NET 2.0: Formatting the GridView。如果您需要有关格式化 gridview 列的帮助,请发布您的代码。您是否设置列的格式字符串?您可以使用短格式,例如 d 指定在最终用户的区域设置中仅显示日期
  • @PauGacusan 请也试试这个:text=''

标签: c# asp.net date


【解决方案1】:
Console.WriteLine(
    DateTime.ParseExact("12/13/2016","d", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd"));

产生2016-12-13

【讨论】:

  • 更好的是,查询时根本不要将日期转换为文本,因此不需要转换
  • 正如 OP 所述,StartDate 是一个 date 字段。 GridView 列有一个DataFormatString 属性根本不需要转换或解析。
  • @PhillipNgan 谢谢先生。它奏效了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 2011-10-22
相关资源
最近更新 更多