日期与日期时间

时间:2009-04-28 14:05:04

标签: c# .net asp.net

我正在制作一个程序,要求返回一个事件的日期。

我正在寻找Date,而不是DateTime

是否有只返回日期的数据类型?

13 个答案:

答案 0 :(得分:116)

不,没有。 DateTime表示由日期和时间组成的某个时间点。但是,您可以通过Date属性(另一个DateTime检索日期部分,时间设置为00:00:00)。

您可以通过DayMonthYear检索单个日期属性。

答案 1 :(得分:19)

当你需要一个简单的约会而不用担心时间部分,时区,本地和utc等时,我创建了一个简单的Date struct

Date today = Date.Today;
Date yesterday = Date.Today.AddDays(-1);
Date independenceDay = Date.Parse("2013-07-04");

independenceDay.ToLongString();    // "Thursday, July 4, 2013"
independenceDay.ToShortString();   // "7/4/2013"
independenceDay.ToString();        // "7/4/2013"
independenceDay.ToString("s");     // "2013-07-04"
int july = independenceDay.Month;  // 7

https://github.com/claycephus/csharp-date

答案 2 :(得分:13)

不幸的是,不在.Net BCL中。日期通常表示为DateTime对象,时间设置为午夜。

你可以猜到,这意味着你周围有所有伴随的时区问题,即使对于Date对象你也绝对不需要时区处理。

答案 3 :(得分:9)

创建一个包装类。像这样:

public class Date:IEquatable<Date>,IEquatable<DateTime>
    {
        public Date(DateTime date)
        {
            value = date.Date;
        }

        public bool Equals(Date other)
        {
            return other != null && value.Equals(other.value);
        }

        public bool Equals(DateTime other)
        {
            return value.Equals(other);
        }

        public override string ToString()
        {
            return value.ToString();
        }
        public static implicit operator DateTime(Date date)
        {
            return date.value;
        }
        public static explicit operator Date(DateTime dateTime)
        {
            return new Date(dateTime);
        }

        private DateTime value;
    }

并展示你想要的任何value

答案 4 :(得分:4)

Date类型只是VB.NET使用的DateTime类型的别名(如int变为Integer)。这两种类型都有一个Date属性,它返回时间部分设置为00:00:00的对象。

答案 5 :(得分:3)

DateTime具有Date属性,可用于隔离日期部分。 ToString方法也可以很好地仅在时间部分为空时显示日期部分。

答案 6 :(得分:2)

DateTime对象有一个Property,它只返回值的日期部分。

    public static void Main()
{
    System.DateTime _Now = DateAndTime.Now;
    Console.WriteLine("The Date and Time is " + _Now);
    //will return the date and time
    Console.WriteLine("The Date Only is " + _Now.Date);
    //will return only the date
    Console.Write("Press any key to continue . . . ");
    Console.ReadKey(true);
}

答案 7 :(得分:2)

没有Date数据类型。

但是,您可以使用DateTime.Date来获取日期。

<强> E.G。

DateTime date = DateTime.Now.Date;

答案 8 :(得分:1)

您可以返回时间部分为00:00:00的DateTime,然后忽略它。日期作为时间戳整数处理,因此将日期与整数中存在的时间结合起来是有意义的。

答案 9 :(得分:1)

为此,您需要使用日期,但忽略时间值。

通常日期是DateTime,时间为00:00:00

DateTime类型具有.Date属性,该属性返回DateTime,其时间值设置如上。

答案 10 :(得分:1)

public class AsOfdates
{
    public string DisplayDate { get; set; }
    private DateTime TheDate;
    public DateTime DateValue 
    {
        get 
        { 
            return TheDate.Date; 
        } 

        set 
        { 
            TheDate = value; 
        } 
    }    
}

答案 11 :(得分:0)

您可以尝试以下方法之一:

DateTime.Now.ToLongDateString();
DateTime.Now.ToShortDateString();

但是BCL中没有“日期”类型。

答案 12 :(得分:0)

.NET 6 似乎终于引入了仅日期类型。它将被称为 DateOnly,并且还会有一个 TimeOnly 类型添加到 System 命名空间中的 BCL。

它已在预览版 4 中提供。阅读this blog article 了解更多详情。