[106] | 1 | Class TimeSpan
|
---|
| 2 | m_Time As Int64
|
---|
| 3 | Public
|
---|
| 4 | Static MaxValue = 3162240000000000000 As Int64
|
---|
| 5 | Static MinValue = -3162240000000000000 As Int64
|
---|
| 6 | Static TicksPerDay = 864000000000 As Int64
|
---|
| 7 | Static TicksPerHour = 36000000000 As Int64
|
---|
| 8 | Static TicksPerMinute = 600000000 As Int64
|
---|
| 9 | Static TicksPerSecond = 10000000 As Int64
|
---|
| 10 | Static TicksPerMillisecond = 10000 As Int64
|
---|
| 11 | Static Zero = 0 As Int64
|
---|
| 12 |
|
---|
| 13 | Sub TimeSpan(ticks As Int64)
|
---|
| 14 | If (ticks > MaxValue) Or (ticks < MinValue) Then
|
---|
| 15 | 'ArgumentOutOfRangeException
|
---|
| 16 | debug
|
---|
| 17 | Exit Sub
|
---|
| 18 | End If
|
---|
| 19 | m_Time = ticks
|
---|
| 20 | End Sub
|
---|
| 21 |
|
---|
| 22 | Sub TimeSpan(ByRef ts As TimeSpan)
|
---|
| 23 | m_Time = ts.m_Time
|
---|
| 24 | End Sub
|
---|
| 25 |
|
---|
| 26 | Sub ~TimeSpan()
|
---|
| 27 | End Sub
|
---|
| 28 |
|
---|
| 29 | Function Operator+ (ByRef ts As TimeSpan) As TimeSpan
|
---|
| 30 | Return FromTicks(m_Time + ts.m_Time)
|
---|
| 31 | End Function
|
---|
| 32 |
|
---|
| 33 | Function Operator- (ByRef ts As TimeSpan) As TimeSpan
|
---|
| 34 | Return FromTicks(m_Time - ts.m_Time)
|
---|
| 35 | End Function
|
---|
| 36 |
|
---|
| 37 | Function Operator* (value As Long) As TimeSpan
|
---|
| 38 | Return FromTicks(m_Time * value)
|
---|
| 39 | End Function
|
---|
| 40 |
|
---|
| 41 | Function Operator/ (value As Long) As TimeSpan
|
---|
| 42 | Return FromTicks(m_Value \ value)
|
---|
| 43 | End Function
|
---|
| 44 |
|
---|
| 45 | Function Operator== (ByRef ts As TimeSpan) As Boolean
|
---|
| 46 | Return Equals(ts)
|
---|
| 47 | End Function
|
---|
| 48 |
|
---|
| 49 | Function Operator<> (ByRef ts As TimeSpan) As Boolean
|
---|
| 50 | Return Not Equals(ts)
|
---|
| 51 | End Function
|
---|
| 52 |
|
---|
| 53 | Function Operator> (ByRef ts As TimeSpan) As Boolean
|
---|
| 54 | If CompareTo(ts) > 0 Then
|
---|
| 55 | Return True
|
---|
| 56 | Else
|
---|
| 57 | Return False
|
---|
| 58 | End If
|
---|
| 59 | End Function
|
---|
| 60 |
|
---|
| 61 | Function Operator< (ByRef ts As TimeSpan) As Boolean
|
---|
| 62 | If CompareTo(ts) < 0 Then
|
---|
| 63 | Return True
|
---|
| 64 | Else
|
---|
| 65 | Return False
|
---|
| 66 | End If
|
---|
| 67 | End Function
|
---|
| 68 |
|
---|
| 69 | Function Operator>= (ByRef ts As TimeSpan) As Boolean
|
---|
| 70 | If CompareTo(ts) => 0 Then
|
---|
| 71 | Return True
|
---|
| 72 | Else
|
---|
| 73 | Return False
|
---|
| 74 | End If
|
---|
| 75 | End Function
|
---|
| 76 |
|
---|
| 77 | Function Operator<= (ByRef ts As TimeSpan) As Boolean
|
---|
| 78 | If CompareTo(ts) <= 0 Then
|
---|
| 79 | Return True
|
---|
| 80 | Else
|
---|
| 81 | Return False
|
---|
| 82 | End If
|
---|
| 83 | End Function
|
---|
| 84 |
|
---|
| 85 | 'Public Properties
|
---|
| 86 | Function Ticks() As Int64
|
---|
| 87 | Return m_Time
|
---|
| 88 | End Function
|
---|
| 89 |
|
---|
| 90 | Function Milliseconds() As Long
|
---|
| 91 | Return (m_Time \ TicksPerMillisecond Mod 1000) As Long
|
---|
| 92 | End Function
|
---|
| 93 |
|
---|
| 94 | Function Seconds() As Long
|
---|
| 95 | Return (m_Time \ TicksPerSecond Mod 60) As Long
|
---|
| 96 | End Function
|
---|
| 97 |
|
---|
| 98 | Function Minutes() As Long
|
---|
| 99 | Return (m_Time \ TicksPerMinute Mod 60) As Long
|
---|
| 100 | End Function
|
---|
| 101 |
|
---|
| 102 | Function Hours() As Long
|
---|
| 103 | Return (m_Time \ TicksPerHour Mod 24) As Long
|
---|
| 104 | End Function
|
---|
| 105 |
|
---|
| 106 | Function Days() As Long
|
---|
| 107 | Return (m_Time \ TicksPerDay) As Long
|
---|
| 108 | End Function
|
---|
| 109 |
|
---|
| 110 | Function TotalMilliseconds() As Double
|
---|
| 111 | Return m_Time / TicksPerMillisecond
|
---|
| 112 | End Function
|
---|
| 113 |
|
---|
| 114 | Function TotalSeconds() As Double
|
---|
| 115 | Return m_Time / TicksPerSecond
|
---|
| 116 | End Function
|
---|
| 117 |
|
---|
| 118 | Function TotalMinute() As Double
|
---|
| 119 | Return m_Time / TicksPerMinute
|
---|
| 120 | End Function
|
---|
| 121 |
|
---|
| 122 | Function TotalHours() As Double
|
---|
| 123 | Return m_Time / TicksPerHour
|
---|
| 124 | End Function
|
---|
| 125 |
|
---|
| 126 | Function TotalDays() As Double
|
---|
| 127 | Return m_Time / TicksPerDay
|
---|
| 128 | End Function
|
---|
| 129 |
|
---|
| 130 | Function Add(ByRef ts As TimeSpan) As TimeSpan
|
---|
| 131 | Return FromTicks(m_Time + ts.m_Time)
|
---|
| 132 | End Function
|
---|
| 133 |
|
---|
| 134 | Static Function Compare(ByRef ts1 As TimeSpan, ByRef ts2 As TimeSpan) As Long
|
---|
| 135 | If ts1.m_Time < ts2.m_Time Then
|
---|
| 136 | Return -1
|
---|
| 137 | ElseIf ts1.m_Time = ts2.m_Time Then
|
---|
| 138 | Return 0
|
---|
| 139 | ElseIf ts1.m_Time > ts2.m_Time Then
|
---|
| 140 | Return 1
|
---|
| 141 | End If
|
---|
| 142 | End Function
|
---|
| 143 |
|
---|
| 144 | Function CompareTo(ByRef ts As TimeSpan) As Long
|
---|
| 145 | Return (m_Time - ts.m_Time) As Long
|
---|
| 146 | End Function
|
---|
| 147 |
|
---|
| 148 | Function Duration() As TimeSpan
|
---|
| 149 | Return FromTicks(Math.Abs(m_Time))
|
---|
| 150 | End Function
|
---|
| 151 |
|
---|
| 152 | Function Equals(ByRef ts As TimeSpan) As Boolean
|
---|
| 153 | Return Equals(This, ts)
|
---|
| 154 | End Function
|
---|
| 155 |
|
---|
| 156 | Static Function Equals(ByRef ts1 As TimeSpan, ByRef ts2 As TimeSpan) As Boolean
|
---|
| 157 | If ts1.m_Time = ts2.m_Time Then
|
---|
| 158 | Return True
|
---|
| 159 | Else
|
---|
| 160 | Return False
|
---|
| 161 | End If
|
---|
| 162 | End Function
|
---|
| 163 |
|
---|
| 164 | Static Function FromTicks(ticks As Int64) As TimeSpan
|
---|
| 165 | If (ticks > MaxValue) Or (ticks < MinValue) Then
|
---|
| 166 | 'ArgumentOutOfRangeException
|
---|
| 167 | debug
|
---|
| 168 | Exit Function
|
---|
| 169 | End If
|
---|
| 170 | FromTicks.m_Time = ticks
|
---|
| 171 | End Function
|
---|
| 172 |
|
---|
| 173 | Static Function FromMilliseconds(value As Double) As TimeSpan
|
---|
| 174 | Return FromTicks((value * TicksPerMillisecond) As Int64)
|
---|
| 175 | End Function
|
---|
| 176 |
|
---|
| 177 | Static Function FromSeconds(value As Double) As TimeSpan
|
---|
| 178 | Return FromTicks((value * TicksPerSecond)As Int64)
|
---|
| 179 | End Function
|
---|
| 180 |
|
---|
| 181 | Static Function FromMinutes(value As Double) As TimeSpan
|
---|
| 182 | Return FromTicks((value * TicksPerMinute) As Int64)
|
---|
| 183 | End Function
|
---|
| 184 |
|
---|
| 185 | Static Function FromHours(value As Double) As TimeSpan
|
---|
| 186 | Return FromTicks((value * TicksPerHour) As Int64)
|
---|
| 187 | End Function
|
---|
| 188 |
|
---|
| 189 | Static Function FromDays(value As Double) As TimeSpan
|
---|
| 190 | Return FromTicks((value * TicksPerDay) As Int64)
|
---|
| 191 | End Function
|
---|
| 192 |
|
---|
| 193 | Function Negate() As TimeSpan
|
---|
| 194 | Return FromTicks(m_Time * (-1))
|
---|
| 195 | End Function
|
---|
| 196 |
|
---|
| 197 | Function Subtract(ByRef ts As TimeSpan) As TimeSpan
|
---|
| 198 | Return FromTicks(m_Time - ts.m_Time)
|
---|
| 199 | End Function
|
---|
| 200 | End Class
|
---|