此问题已在此处有答案:
A type for Date only in C# - why is there no Date type?(14个回答)
两年前关闭。
我正在做一些领域建模,遇到了一个属性,在我看来,最好是以Date而不是DateTime公开,没有时间组件。
框架中没有这样的类型有什么好的理由吗?在SQL Server中添加Date类型被认为是一个足够好的主意。另外,如果有人知道Date类的方便实现,请告诉我!
- 2018编辑:我现在使用值对象类型解决这个问题:*
public class Date : ValueOf<DateTime, Date> //Install-Package ValueOf
{
protected override void Validate()
{
if (Value.Date != Value) throw new ArgumentException();
}
}
...
var date = Date.From(someDateTime);
7条答案
按热度按时间rwqw0loc1#
在这个问题被问到的时候,没有一个,是的,应该有一个。幸运的是,在.NET 6中,我们有
DateOnly
和TimeOnly
。我不相信有一个好的理由,除了the date and time API in .NET isn't very good在我(非常有偏见)的观点。
我是Noda Time项目的主要维护者,该项目包含
LocalDate
和LocalTime
,这是一个相当大的类型集的一部分。c9qzyr3d2#
我创建了一个简单的Date struct,当你需要一个简单的日期,而不用担心时间部分,时区,本地和本地。UTC等。
https://github.com/claycephas/csharp-date
rmbxnbpk3#
在数据库中,存储容量更重要,因此使用比
datetime
更少空间的date
类型可能是有意义的。在应用程序中,很少需要保存这几个字节。您可以很容易地创建一个
Date
类型,在DateTime
之间进行转换,但只在内部存储日期。类似于:vhmi4jdf4#
使用ToShortDateString()方法。如果你需要一个网格或其他东西的属性,创建一个只读属性,它只返回yourDate.ToShortDateString(),你就得到了!
n1bvdmb65#
VB.NET有这种类型,
Date
数据类型。我相信这是作为VB6应用程序代码的一个要求,它包含这种类型,而不是我们在. NET中使用的DateTime
类型。日期数据类型(Visual Basic):
http://msdn.microsoft.com/en-us/library/3eaydw6e(v=vs.110).aspx
oipij1gg6#
是的,有一个。
Date
、DateTime
(VB)和DateTime
(C#)都有一个名为Date
的函数,它只返回日期/时间的日期部分。还有一个
Time
函数,所以你可以同时使用它们,并分别返回日期/时间部分。vi4fp9gy7#
实际上并不需要一个日期-只需使用时间组件设置为零的日期(即前一天的午夜),或者完全忽略时间分量。
例如,您可以使用
DateTime.Today
获取今天的日期(而不是DateTime.Now
)