没有时间的.NET日期 - 有一个,还是我不需要一个?

mci*_*321 38 .net datetime date

我正在进行一些域建模并遇到一个属性,在我看来这个属性最好暴露为Date而不是DateTime,没有时间组件.

是否有充分理由说明框架中没有这种类型?将日期类型添加到SQL Server被认为是一个很好的想法.另外,如果有人知道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);
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 42

不,没有一个,是的,应该有.

我不相信除了.NET的日期和时间API在我(非常有偏见)的视图中不是很好之外,还有一个很好的理由.

我工作的一个名为新的API 野田的时间,当然这确实有(日期-只有类LocalDate),但它不是为生产做好准备呢.当然,它可能已经完成了你所需要的一切,如果它几乎可以,那么你总是可以要求尽快实现你需要的功能......

  • 哇即时...甚至谷歌即时搜索比你慢.谢谢您的帮助. (4认同)
  • @RosdiKasim:在野田时间内?`date.AtMidnight().ToDateTimeUnspecified()` (3认同)

Guf*_*ffa 7

在数据库中,存储容量更重要,因此date使用比a少的空间的类型datetime可能有意义.在应用程序中,您很少需要保存这几个字节.

您可以更轻松地创建一个Date转换为和从中转换的类型DateTime,但仅在内部存储日期.就像是:

public struct Date {

  private int _days;

  private Date(int days) { _days = days; }

  public implicit operator DateTime(Date date) {
    return DateTime.MinValue.AddDays(date._days);
  }

  public implicit operator Date(DateTime dateTime) {
    return new Date((int)(dateTime - DateTime.MinValue).TotalDays);
  }

}
Run Code Online (Sandbox Code Playgroud)


Cla*_*lay 7

当你需要一个简单的日期而不用担心时间部分,时区,本地和utc等时,我创建了一个简单的Date结构.

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