如何将DateTime转换为C#中的日期

时间:2009-12-29 16:29:14

标签: c# datetime .net-4.0

我无法相信我花了多长时间才找到这个看似显而易见的问题的答案。

Date SomeRandomMadeUpDate = DateTime.Now.AddMonths(randomMonths).Date;
  

无法将类型'System.DateTime'隐式转换为'System.Date'   我甚至可以打电话:

Date.Now

但是在其上调用.AddDays会返回DateTime

同样,问题是:如何将C#DateTime转换为C#Date

5 个答案:

答案 0 :(得分:12)

没有“日期”类型。这都是DateTimes。只是当你打电话给.Date时,你就会在当天的午夜获得DateTime。

如果你在讨论VB.NET中的“Date”数据类型,那就和DateTime一样,不管你信不信。

答案 1 :(得分:11)

.NET没有代表日期的类型 - 这样的问题让我开始Noda Time(它甚至还没有准备好进行生产)。

DateTime.Date返回另一个DateTime,其日期与原始日期相同,但是在午夜。这基本上是.NET中与Date类型最接近的类型:(请注意,如果您想要今天的日期,那么DateTime.Today是一种更简单的方式来调用DateTime.Now.Date

我不知道为什么编译器会给出一条错误消息,提示 System.Date类型 - 它不在我的机器上:

using System;

class Test
{
    static void Main()
    {
        Date today = DateTime.Now.Date;
    }
}

给出了这个错误:

  

Test.cs(7,9):错误CS0246:类型   或命名空间名称'日期'不能   发现(你错过了使用   指令或程序集引用?)

你能给出一个类似简短但完整的程序,显示你得到的错误信息吗?您是否引用了其他 具有System.Date类型的库? (正如汤米卡里尔所说,也许System.Dataflow?)

答案 2 :(得分:3)

您可以从Date对象构建新的DateTime对象:

Date d = new Date(DateTime.Now);

请参阅http://msdn.microsoft.com/en-us/library/system.date.date(VS.85).aspx

答案 3 :(得分:3)

我不得不查一查,因为我不知道.NET 4.0中有Date类型,但显然System.Dataflow.dll中有一个。只需使用构造函数,将DateTime作为参数:

Date d = new Date(dt);

答案 4 :(得分:1)

尝试执行以下操作

string onlyDate = DateTime.Now.ToString("dd/MM/yyyy");   

这将返回仅将日期作为字符串返回,因此我认为您可以将其用作

 Date dateNow = new Date(onlyDate );