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

the*_*age 3 c# datetime .net-4.0

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

Date SomeRandomMadeUpDate = DateTime.Now.AddMonths(randomMonths).Date;
Run Code Online (Sandbox Code Playgroud)

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

Date.Now
Run Code Online (Sandbox Code Playgroud)

但是呼唤.AddDays它会返回一个DateTime.

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

Dav*_*kle 12

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

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


Jon*_*eet 11

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

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

我不知道为什么编译器是给这表明存在一个错误消息一个System.Date类型-它并不在我的机器上:

using System;

class Test
{
    static void Main()
    {
        Date today = DateTime.Now.Date;
    }
}
Run Code Online (Sandbox Code Playgroud)

给出了这个错误:

Test.cs(7,9):错误CS0246:找不到类型或命名空间名称'Date'(您是否缺少using指令或程序集引用?)

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

  • @Tommy:这是我的怀疑(见编辑:) - 这是坦率的可怕.SQL Server特定的东西不应该贡献给`System`命名空间:( (4认同)
  • System.Dataflow.dll(SQL Server建模的一部分)的类型为System.Date。 (2认同)