使用c#将typeof(DateTime)更改为仅日期

本文关键字:日期 DateTime typeof 使用 | 更新日期: 2023-09-27 18:27:00

我正在尝试将DateTime列添加到DataTable。我使用这个代码:

DataTable dt = new DataTable();
dt.Columns.Add("date", typeof(DateTime));

但这需要格式为"dd.MM.yyyy HH:MM:ss"的DateTime

我想要的只是日期。所以typeof(DateTime),但只有日期。

如果你有更好的方法,请告诉我。我的方法只是我的一个想法:)

建议感谢:)

编辑:

我想使用DataTable作为Telerik RadGridViewDataSource。我正在使用CellFormatting事件,并在其中尝试填充RadGridView单元格中的日期。在这里你可以看到我使用的片段:

DateTime.ParseExact(e.CellElement.Value.ToString(), "dd.MM.yyyy HH:mm:ss", CultureInfo.CurrentCulture)

这将从逻辑上显示日期与时间的组合。但如果我把它改成

DateTime.ParseExact(e.CellElement.Value.ToString(), "dd.MM.yyyy", CultureInfo.CurrentCulture

它抛出一个异常,即这不是一个有效的DateTime格式,因为我在上面使用了typeof(DateTime)。所以它也需要时间,否则就会抛出异常。

第2版:

这是一个Windows窗体应用程序。

使用c#将typeof(DateTime)更改为仅日期

DateTime没有格式,它只有一个值。您可以以特定格式显示DateTime,例如不显示时间。或者,可以使用Date属性截断DateTime的时间部分。但请注意,这不会从中删除时间分配;它只会返回CCD_ 14,它是同一日期的午夜。

因此,您仍然应该使用DateTime作为列类型,并将格式应用于您想要diplay此字段的位置。

例如:

foreach(DataRow row in dt.Rows)
{
    DateTime date = row.Field<DateTime>("date");
    string dateFormatted = date.ToShortDateString(); // or ToString("d") or dt.ToString("dd.MM.yyyy")
}

如注释中所述,DateTime结构中的数据与其格式化方式之间存在差异。如果你只关心日期,标准是把时间放在00:00:00.000。事实上,有一个DateTime的构造函数正是这样做的。

设置日期格式时,显示内容由您决定。使用ToShortDateString可能会得到您想要的输出。

例如

DateTime myDate = new DateTime(2014, 12, 25);
string s = myDate.ToShortDateString(); // s = 12/25/2014

我建议在数据源中保留一个有效的DateTime对象,并使用网格的功能来更改单元格中显示的格式。下面是一个小例子,演示如何实现这一点。

        DataTable dt = new DataTable();
        dt.Columns.Add("date", typeof(DateTime));
        dt.Rows.Add(DateTime.Now);
        dt.Rows.Add(DateTime.Now.AddDays(1));
        RadGridView grid = new RadGridView();
        this.Controls.Add(grid);
        grid.DataSource = dt;
        GridViewDateTimeColumn dateColumn = (GridViewDateTimeColumn )grid.Columns["date"];
        //this will set the format of the date displayed in the cells
        dateColumn.FormatString = "{0:dd.MM.yyyy}";
        //this will set the format of the editor - when the cell is opened for editing
        dateColumn.Format = DateTimePickerFormat.Custom;
        dateColumn.CustomFormat = "dd.MM.yyyy";

有关此列类型的更多信息,请参阅Telerik UI for WinForms文档。