当前位置: 首页 > 编程语言 > C#

在C#中表示时间对象的最佳实践是什么?分享

时间:2023-04-11 00:09:22 C#

在C#中表示Time对象的最佳实践是什么?我在数据库表中有一个时间列。日期并不重要,我们只需要一天中的时间。哪种类型最适合用C#表达?我打算使用DateTime,但我不喜欢日期的想法。虽然其他答案大多是正确的,即TimeSpan是唯一有效的内置类型,但重要的是要认识到“经过时间的测量”和“一天中的时间”之间存在明显差异。因此,如果您使用TimeSpan作为时间,则需要注意这些问题。.NET在一段时间内没有内置类型,因此这是一个可以接受的妥协,即使它违反了它自己的设计。甚至.NETFramework本身也会做出这种妥协。例如:MSDN参考文档对TimeSpan类型有这样的描述:TimeSpan结构也可用于表示一天中的时间,但前提是该时间与特定日期无关。否则,应使用DateTime或DateTimeOffset结构。这基本上是我在上面第三点关于夏令时所说内容的另一种说法。但是,如果您不想在设计中做出妥协并想要实时类型,请查看NodaTime库。虽然有些人可能会争辩说TimeSpan更通用,因为它可以处理所有这些,但事实是它会给你带来麻烦。通过分离类型,您可以获得安全性和一致性。或者,您可以使用Microsoft提供的System.Time包作为CoreFX实验室的一部分。此包包含名为TimeOfDay的仅限时间类型和名为Date的仅限日期类型的实现。您需要使用dotnet-corefxlabMyGet源导入此包。JonSkeet一直致力于NodaTime,也许这会有所帮助。Skeet关于为什么它可能对您有用的帖子:DateTime有什么问题?您可以尝试类似TimeSpants=DateTime.Now.TimeOfDay的方法,其中应用DateTime对象的时间属性并使用它。使用Timespan表示从午夜到time的时间跨度。我将使用TimeSpan来表示它,它是从午夜开始的时间跨度。这与框架中DateTime的TimeOfDay属性有关。我们实际上推出了自己的Time类。我们遇到的问题是TimeSpan不知道我们仍然需要的时区偏移量。所以我们创建了一个TimeSpanOffset类。类似于DateTimeOffset类。如果时区不重要,那么我肯定会坚持使用TimeSpan。以上是C#学习教程:WhatisthebestpracticeforrepresentingTimeobjectsinC#?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: