首页 / 知识

关于c#:处理和存储经过时间

2023-04-16 17:06:00

关于c#:处理和存储经过时间

Handling and storing elapsed time

我在决定最好的方法是处理和存储时间测量时遇到问题。

我有一个带有文本框的应用程序,允许用户以hh:mm:ss或mm:ss格式输入时间。

因此,我打算解析此字符串,在冒号上标记它,并创建TimeSpan(或使用TimeSpan.Parse()并在mm:ss案例中添加一个" 00:")作为我的业务逻辑。 好?

我如何将其存储为数据库? 字段类型是什么? DateTime似乎是错误的。 我不想将00:54:12的时间存储为1901-01-01 00:54:12似乎有点可怜?


TimeSpan具有您可以存储的Int64 Ticks属性,以及具有Ticks值的构造函数。


对于不到一天的时间,只需使用其他人所说的几秒钟即可。

对于更长的时间,它取决于您的数据库引擎。如果是SQL Server(2008版之前的版本),则需要日期时间。没关系-您可以忽略它们全部具有的默认1/1/1900日期。如果您有幸拥有sql server 2008,那么可以使用单独的Date和Time数据类型。使用实际日期时间/时间类型的优点是可以使用DateDiff函数比较持续时间。


我认为最简单的方法就是将用户输入转换为整数秒。因此54:12 == 3252秒,因此将3252存储在数据库中或任何地方。然后,当您需要将其显示给用户时,可以再次将其转换回去。


并且int类型应该做到这一点,将其存储为秒并来回解析

http://msdn.microsoft.com/en-us/library/ms187745.aspx


使用整数秒或分钟。秒可能更好。您永远都不会为选择精度过高而自欺欺人。另外,对于您的UI,请考虑使用多个文本输入,而不必担心用户实际上是否正确键入了":"。添加其他约束(例如分钟和秒值,包含0-59)也容易得多。


您是否同时收集开始时间和停止时间?如果是这样,如果您的DBMS支持,则可以使用"时间戳"数据类型。如果不是,则作为日期/时间类型。现在,您已经说过您不希望存储日期部分-但是考虑时间段跨过午夜的情况-例如,您从23:55:01开始并在00:05:14结束-除非您还可以在那里找到日期。有标准的内置函数可返回两个日期时间值之间的经过时间(以秒为单位)。


以秒为单位的整数(或毫秒)


大多数数据库都有某种时间间隔类型。答案取决于您正在谈论的数据库。对于Oracle,它只是一个浮点数NUMBER,代表天数(包括小数天数)。您可以将其添加到任何DATE类型或从中减去,您将获得正确的答案。


文本框方法用户应用程序

最新内容

相关内容

猜你喜欢