是否只有TimeSpan等Date类型而不是DateTime?

时间:2011-10-14 20:08:33

标签: c# .net datetime

在我的应用程序中,我有Movie类型和User类型,其中任何User可以指定他们在日志中查看特定电影以及评分等,但我只是感兴趣的是当天而不是时间,所以想知道是否只有Date类型只存储了一天而没有其他东西,即没有Time

8 个答案:

答案 0 :(得分:4)

没有。最近的事情,如果你必须确保没有时间数据附加到你的DateTime对象,那就是使用DateTime.Date property,其返回值是另一个DateTime,但是时间值设置为00:00:00(午夜)。

当然,在显示日期时,您可以根据需要控制其formatting

In particular, the Short Date specifier

var dateValue = new DateTime(2011, 10, 14);
dateValue.ToString("d");

将在Invariant文化中输出10/14/2011

答案 1 :(得分:3)

您通常使用时间设置为午夜的DateTime。您可以使用DateTime.Date属性将任何时间戳转换为日期。

如果你需要一个更紧凑的表示法,你可以计算一个整数来表示日期作为某一天以来的天数,但我只会在必要时才这样做。

但是DateTime对于当地时代来说有点难看(对于UTC时间来说没问题),所以你可以考虑使用DateTimeOffset或者使用第三方库。

答案 2 :(得分:2)

不,没有。您可以使用DateTime,但我不推荐它。它从根本上说是错误的工作类型,它有一些very odd characteristics

我正在忙于Noda Time,这是一个替代的.NET日期和时间库,基于Joda Time的计算引擎,但主要是从头开始的API。它还没有完全准备就绪,但它已经到了 - 而且我有兴趣为早期采用者提供尽可能多的帮助......

当然,我们支持LocalDate :)(它不仅存储日期 - 它还存储它正在使用的日历系统,因此如果您不使用普通的公历,您仍然可以在你的自然系统中执行操作,但这是另一回事。)

答案 3 :(得分:1)

使用需要年,月和日的DateTime构造函数:

public DateTime(
      int year,
      int month,
      int day
  )

E.g。

DateTime usersDate = new DateTime(2011, 10, 14);

请注意,这仍然使用相同的类型,但零时间(午夜)。

答案 4 :(得分:0)

在BCL,没有。但是您可以使用各种ToString覆盖来显示(返回一个字符串),其中只包含一个日期并忽略时间部分。

答案 5 :(得分:0)

没有。但你可以创建一个,你需要它(基于DateTime)

答案 6 :(得分:0)

据我所知,但您总是可以引用Date对象的DateTime部分。

像这样:DateTime myDate = DateTime.Now.Date;

答案 7 :(得分:0)

这是DateTime.Date的用途。它仍然是一个DateTime,但它会让你的时间归零。只要始终如一地使用它,你就会得到你想要的东西。