是否有.NET方式来存储像我的自定义类这样的时间段?

VJK*_*VJK 5 .net date

是否有一个本机.NET类来处理这样的时间跨度?我找不到一个.

有没有接近?

Public Class Period

    Property FromDate As Date
    Property ToDate As Date

    Public Sub New(ByVal fromDate As Date, ByVal toDate As Date)

        If fromDate > toDate Then
            Throw New ArgumentException("fromDate must be less than Or equal toDate")
        End If

        _FromDate = fromDate
        _ToDate = toDate

    End Sub

    Public Overloads Shared Operator =(ByVal period1 As Period,
                                       ByVal period2 As Period) As Boolean

        Return period1.FromDate = period2.FromDate AndAlso
               period1.ToDate = period2.ToDate

    End Operator

    Public Overloads Shared Operator <>(ByVal period1 As Period,
                                        ByVal period2 As Period) As Boolean

        Return Not period1 = period2

    End Operator

    Public Overloads Shared Operator <(ByVal period1 As Period,
                                       ByVal period2 As Period) As Boolean

        Return period1.FromDate < period2.FromDate

    End Operator

    Public Overloads Shared Operator >(ByVal period1 As Period,
                                   ByVal period2 As Period) As Boolean

        Return period1.FromDate > period2.FromDate

    End Operator

    Public Overloads Shared Operator >=(ByVal period1 As Period,
                               ByVal period2 As Period) As Boolean

        Return period1.FromDate >= period2.FromDate

    End Operator

    Public Overloads Shared Operator <=(ByVal period1 As Period,
                                        ByVal period2 As Period) As Boolean

        Return period1.FromDate <= period2.FromDate

    End Operator

    Public Function Contains(ByVal checkDate As Date) As Boolean

        Return checkDate >= Me.FromDate AndAlso
               checkDate < Me.ToDate

    End Function

    Public Overrides Function ToString() As String
        Return Format(_FromDate, "MMM-yyyy") & "-" &  Format(_ToDate, "MMM-yyyy")            
    End Function

End Class
Run Code Online (Sandbox Code Playgroud)

和派生的月期:

Public Class MonthPeriod : Inherits Period

    Private _MonthStartDate As Date

     Public Sub New(ByVal dateInMonth As Date)

        'Everything >= the 1st of the month to < the 1st of the next month
        MyBase.New(New Date(dateInMonth.Year, dateInMonth.Month, 1),
                   New Date(dateInMonth.Year, dateInMonth.Month, 1).AddMonths(1))

        _MonthStartDate = New Date(dateInMonth.Year, dateInMonth.Month, 1)

    End Sub

    Public Overrides Function ToString() As String
        Return Format(_MonthStartDate, "MMM-yyyy")
    End Function

End Class
Run Code Online (Sandbox Code Playgroud)

o. *_*ate 4

简短的回答:我认为没有任何内置类可以与之接近。最接近的可能是 TimeSpan,但这只是一个相对跨度,没有绝对开始或结束日期的概念。