C# 验证值是否为c中的勾号#

C# 验证值是否为c中的勾号#,c#,.net,date,time,C#,.net,Date,Time,我用C#创建了一个时间刻度(635655080937662522),并存储在数据库列中。如何验证此值是否为勾号而不是其他值?勾号是否有特定的格式?勾号是一个数字,您真的无法进行更多的验证 您可以检查实际时间是否在对您的情况有意义的特定范围内,但它是特定于应用程序的。正如其他人所说,勾号只是一个数字,但根据勾号的来源,有一些重要的区别 DateTime或DateTimeOffset的刻度各为100ns,范围为DateTime.MinValue.Ticks到DateTime.MaxValue.Ti

我用C#创建了一个时间刻度(635655080937662522),并存储在数据库列中。如何验证此值是否为勾号而不是其他值?勾号是否有特定的格式?

勾号是一个数字,您真的无法进行更多的验证


您可以检查实际时间是否在对您的情况有意义的特定范围内,但它是特定于应用程序的。

正如其他人所说,勾号只是一个数字,但根据勾号的来源,有一些重要的区别

  • DateTime
    DateTimeOffset
    的刻度各为100ns,范围为
    DateTime.MinValue.Ticks
    DateTime.MaxValue.Ticks
    ,即
    0
    3155378975999999
    。请注意,这比
    Int64.MaxValue
    小得多

  • TimeSpan
    的刻度也各为100ns,但范围为
    TimeSpan.MinValue.Ticks
    TimeSpan.MaxValue.Ticks
    ,这与
    Int64
    的范围相同,即
    -9223372036854775808
    9223372036854775807

  • 秒表
    (在
    系统诊断
    命名空间中)的刻度大小不同,具体取决于系统的硬件功能。在现代硬件上,它们通常在4ns左右。您可以使用
    Stopwatch.appeased.ticks
    而不是
    Stopwatch.elaspeddicks
    ,或者在计算中考虑到时间间隔,将它们调整为
    TimeSpan
    刻度。范围是
    0
    Int64.MaxValue


勾号计数只是一个数字,因此从0到long.MaxValue的任何范围都是可以接受的。您唯一能做的就是将其转换回DateTime,并查看其是否在合理范围内。例如,我想“无效勾号”的日期应该是2410年?如果是这样,您可以根据刻度创建一个
DateTime
,并检查它是否在合理的日期范围内。然而,你应该问自己“为什么这是一个无效的数字,我能做些什么来防止它?”另请参见: