首页 > 解决方案 > 仅从 ToDateTime 返回日期

问题描述

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

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

我想要的只是以 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

标签: c#asp.netssms

解决方案


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

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

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

ToString()函数以您希望它显示的方式格式化输出。也许您尝试ToString()在没有格式化参数的情况下调用。我将其更改为Convert.ToDateTimeDateTime.Parse因为Convert.ToDateTime无论如何都会调用它。

附带说明一下,看一下用于处理数据库的 Entity Framework,它可以节省大量时间。


推荐阅读