仅从 ToDateTime 返回日期

Returning only date from ToDateTime

注意,我对使用数据库还很陌生,所以这是一个初级问题。

我正在尝试从 SQL 数据库中提取日期,但它 return 包含日期和时间。在 SQL 中,我将类型设置为日期,因此它不会记录任何时间,但它会继续 return 类似于 01/12/2002 12:00:00。我假设问题出在我的 C# 代码中,使用 ToDateTime() 方法,因为它也意味着 return 时间。

我只想以 MM/dd/yyyy 格式提取日期。

我查看了所有内容并尝试了我在此处和其他网站上找到的无数建议,但仍然没有解决问题。我尝试了 TryParse、转换为字符串以及其他几种尝试解决问题的方法。

感谢大家提供的帮助。非常感谢!

while (reader.Read())
{
    EventModel eventModel = new EventModel();
    eventModel.EventType = reader["EventType"].ToString();
    eventModel.Title = reader["Title"].ToString();
    eventModel.Date = Convert.ToDateTime(reader["Date"]);
    eventModel.Location = reader["Location"].ToString();
    eventModel.Company = reader["Company"].ToString();

    allEvents.AddLast(eventModel);
}
CREATE TABLE [dbo].[Events](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [EventType] [varchar](50) NOT NULL,
    [Title] [varchar](50) NOT NULL,
    [Date] [date] NOT NULL,
    [Location] [varchar](50) NOT NULL,
    [Company] [varchar](50) NULL
) ON [PRIMARY]
GO

尝试下面的操作 return mm/dd/yyyy

   eventModel.Date = Convert.ToDateTime(reader["Date"].ToString()).ToShortDateString();

你说你想把日期格式化DateTime 对象不包含任何格式。如果未提供时间,则 DateTime 的时间部分将默认为午夜。您需要添加格式以仅显示日期部分。

您有几个选择。您可以直接从数据库中格式化日期,但您没有 post 您的 SQL 查询。在不调整查询的情况下,您可以做一些简单的事情,例如将 eventModel.Date 更改为 String 而不是 DateTime 然后:

eventModel.Date = DateTime.Parse(reader["Date"]).ToString("MM/dd/yyyy");

ToString() 函数按照您希望的显示方式格式化输出。也许您尝试在不带格式化参数的情况下调用 ToString()。我将 Convert.ToDateTime 更改为 DateTime.Parse 因为这是 Convert.ToDateTime 无论如何都会调用的内容。

附带说明一下,请查看 Entity Framework 以了解如何使用数据库,这非常节省时间。