我无法相信我花了多长时间才找到这个看似显而易见的问题的答案。
Date SomeRandomMadeUpDate = DateTime.Now.AddMonths(randomMonths).Date;
无法将类型'System.DateTime'隐式转换为'System.Date' 我甚至可以打电话:
Date.Now
但是在其上调用.AddDays
会返回DateTime
。
同样,问题是:如何将C#DateTime
转换为C#Date
答案 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 );