忽略 C# 数据行项日期时间格式

本文关键字:日期 时间 格式 数据 忽略 | 更新日期: 2023-09-27 18:35:25

我正在使用SQL SP的结果填充数据表。其中一列是日期时间类型。当我尝试格式化日期时间值时,它似乎被忽略了。

例如:

foreach (DataRow row in sourceTable.Rows)
            {
                row["DateOfActivity"] = Convert.ToString(((DateTime)row["DateOfActivity"]).ToString("yyyy-MM-dd"));
                Console.WriteLine(row["DateOfActivity"]);
            }

结果:

2/17/2016 12:00:00 AM

如何确保保留日期时间格式?

忽略 C# 数据行项日期时间格式

在可数据对象中,列具有特定的类型。当您赋值回row["DateOfActivity"] 时,您将赋值DateTime值。将其写回控制台将为您提供默认的.ToString()调用。

解决方案是等待格式化输出,直到您实际向用户显示它。完全删除循环内的第一行,让第二行看起来像这样:

Console.WriteLine(row["DateOfActivity"].ToString("yyyy-MM-dd"));

您的问题中不存在row["DateOfActivity"]列的类型定义,但是我将假设它被定义为DateTime类型。 此类型定义存储原始日期/时间值,不带格式。

从 MSDN:

在内部,所有 DateTime 值都表示为自 0001 年 1 月 1 日午夜 12:00:00 以来经过的时钟周期数(100 纳秒间隔数)。实际的 DateTime 值与该值在用户界面元素中显示或写入文件时的显示方式无关。日期时间值的外观是格式设置操作的结果。格式设置是将值转换为其字符串表示形式的过程。

由于日期和时间值的外观取决于区域性、国际标准、应用程序要求和个人首选项等因素,因此 DateTime 结构通过其 ToString 方法的重载在设置日期和时间值的格式方面提供了很大的灵活性。默认的 DateTime.ToString() 方法使用当前区域性的短日期和长时间模式返回日期和时间值的字符串表示形式。下面的示例使用默认的 DateTime.ToString() 方法,使用 en-US 区域性的短日期和长时间模式(运行示例的计算机上的当前区域性)显示日期和时间。

输出 DateTime 类型的值时,应设置其值的格式。如果要在DataTable中存储此值的格式化版本,则需要将该列定义为字符串,然后存储格式化值。

有关详细信息,请参阅此链接DateTime类型。