TimeOnly相较于TimeSpan有哪些优势?

10

TimeOnly是在.Net 6中推出的新类型之一,与DateOnly一起使用。我理解需要DateOnly类型的原因是有很多情况下你想存储日期而没有相关的时间,但是没有数据类型可以实现。

然而,在涉及时间方面,TimeSpan已经存在并且能够表示时间。 TimespanTimeOnly非常相似,只是TimeOnly似乎忽略了一些属性。

除了节省一点内存之外,使用TimeOnly有什么比使用TimeSpan更大的好处吗?


这个回答解决了你的问题吗?如何在.NET中表示仅时间值? - Charlieface
1
这个问题的关注点是TimeOnlyTimeSpan之间的好处,而不仅仅是如何表示时间。 - YungDeiza
1
请注意,TimeOnly之间的差异始终为正值,可能会令人困惑。 - undefined
@MichaelFreidgeim 确实 - 我在我的回答中提到了,TimeSpan 可以表示大约 +/- 29,000 年的范围,而 TimeOnly 只能表示24小时制的时间。 - undefined
1个回答

11
使用TimeOnly而不是TimeSpan的一个好处是可以使用适当的数据类型来表示时间段和时间点。 TimeOnly更适合表示一天中的时间点,而TimeSpan更适合表示时间段/时长。它还具有正确处理跨越午夜的时间相加/相减的方法,而TimeSpan则不具备这个功能。
例如,23:00 + 2小时将等于01:00(使用TimeOnly)。 TimeOnly只允许以产生有效时间点的方式进行修改,而TimeSpan允许进行可能导致超出范围的修改。 TimeSpan可以表示更大范围的时间段(包括负时间段),其范围约为+/- 29,000年,而TimeOnly只能表示00:00:00.0000000到23:59:59.9999999。
以下博客文章提供了关于TimeOnly类型(以及DateOnly)的更多信息:https://devblogs.microsoft.com/dotnet/date-time-and-time-zone-enhancements-in-net-6/

如果它们在内部都以长形式表示,那么会节省很多空间吗? - undefined
1
@Robear 你说得对,它们都只有8个字节。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接