在我的应用程序中,我有Movie
类型和User
类型,其中任何User
可以指定他们在日志中查看特定电影以及评分等,但我只是感兴趣的是当天而不是时间,所以想知道是否只有Date
类型只存储了一天而没有其他东西,即没有Time
。
答案 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,但它会让你的时间归零。只要始终如一地使用它,你就会得到你想要的东西。