我需要删除日期时间的时间部分,或者可能有以下格式的日期在对象形式,而不是在字符串形式。

06/26/2009 00:00:00:000

我不能使用任何字符串转换方法,因为我需要对象形式的日期。

我尝试先将DateTime转换为字符串,从它中删除特定的时间日期,但它添加了12:00:00 AM,只要我将它转换回DateTime对象。


当前回答

创建只包含所需属性的结构体。然后使用扩展方法从DateTime实例轻松获取该结构。

public struct DateOnly
{
    public int Day { get; set; }
    public int Month { get; set; }
    public int Year { get; set; }
}

public static class DateOnlyExtensions
{
    public static DateOnly GetDateOnly(this DateTime dt)
    {
        return new DateOnly
        {
            Day = dt.Day,
            Month = dt.Month,
            Year = dt.Year
        };
    }
}

使用

DateTime dt = DateTime.Now;
DateOnly result = dt.GetDateOnly();

其他回答

将Date属性添加到DateTime变量

var dateTime = DateTime.Now
var onlyDate = dateTime.Date

或者您也可以使用DataType注释。

[DataType(DataType.Date)]
public DateTime dateTime {get; set;}

DataType注释位于System.ComponentModel.DataAnnotations命名空间内。

下面是另一个使用String的方法。格式

    DateTime todaysDate = DateTime.UtcNow;

    string dateString = String.Format("{0:dd/MM/yyyy}", todaysDate);

    Console.WriteLine("Date with Time: "+ todaysDate.ToString());

    Console.WriteLine("Date Only : " + dateString);

输出:

Date with Time: 9/4/2016 11:42:16 AM

Date Only : 04/09/2016

如果日期时间存储在数据库中,这也适用。

有关更多日期和时间格式,请检查这些链接:

参考1

参考2

希望有帮助。

试着创造你自己的结构。DateTime对象将同时具有日期和时间

使用Date属性:

var dateAndTime = DateTime.Now;
var date = dateAndTime.Date;

date变量将包含日期,时间部分将是00:00:00。

我知道这是一个有很多答案的老帖子,但我还没有见过这种删除时间部分的方法。假设您有一个名为myDate的DateTime变量,其中日期和时间部分。你可以从它创建一个新的DateTime对象,没有时间部分,使用这个构造函数:

public DateTime(int year, int month, int day);

是这样的:

myDate = new DateTime(myDate.Year, myDate.Month, myDate.Day);

通过这种方式,您可以基于旧的DateTime对象创建一个新的DateTime对象,其中00:00:00作为时间部分。