diff --git a/apiCount.include.md b/apiCount.include.md
index 999101e0..96700740 100644
--- a/apiCount.include.md
+++ b/apiCount.include.md
@@ -1,28 +1,28 @@
-**API count: 1073**
+**API count: 1088**
### Per Target Framework
| Target | APIs |
| -- | -- |
-| `net461` | 1004 |
-| `net462` | 1004 |
-| `net47` | 1003 |
-| `net471` | 1002 |
-| `net472` | 998 |
-| `net48` | 998 |
-| `net481` | 998 |
-| `netstandard2.0` | 1000 |
-| `netstandard2.1` | 853 |
-| `netcoreapp2.0` | 923 |
-| `netcoreapp2.1` | 864 |
-| `netcoreapp2.2` | 864 |
-| `netcoreapp3.0` | 825 |
-| `netcoreapp3.1` | 824 |
-| `net5.0` | 696 |
-| `net6.0` | 597 |
-| `net7.0` | 444 |
-| `net8.0` | 323 |
-| `net9.0` | 229 |
-| `net10.0` | 175 |
+| `net461` | 1005 |
+| `net462` | 1005 |
+| `net47` | 1004 |
+| `net471` | 1003 |
+| `net472` | 999 |
+| `net48` | 999 |
+| `net481` | 999 |
+| `netstandard2.0` | 1001 |
+| `netstandard2.1` | 854 |
+| `netcoreapp2.0` | 924 |
+| `netcoreapp2.1` | 865 |
+| `netcoreapp2.2` | 865 |
+| `netcoreapp3.0` | 826 |
+| `netcoreapp3.1` | 825 |
+| `net5.0` | 697 |
+| `net6.0` | 598 |
+| `net7.0` | 445 |
+| `net8.0` | 324 |
+| `net9.0` | 230 |
+| `net10.0` | 176 |
| `net11.0` | 58 |
-| `uap10.0` | 990 |
+| `uap10.0` | 991 |
diff --git a/api_list.include.md b/api_list.include.md
index 7bcc81fc..d283b4b6 100644
--- a/api_list.include.md
+++ b/api_list.include.md
@@ -1313,8 +1313,38 @@
* `TimeSpan FromMilliseconds(long, long)` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.frommilliseconds?view=net-11.0#system-timespan-frommilliseconds(system-int64-system-int64))
* `TimeSpan FromMinutes(int, int, int, int)` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.fromminutes?view=net-11.0#system-timespan-fromminutes(system-int32-system-int32-system-int32-system-int32))
* `TimeSpan FromSeconds(long, long, long)` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.fromseconds?view=net-11.0#system-timespan-fromseconds(system-int64-system-int64-system-int64))
+ * `HoursPerDay` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.hoursperday?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
* `Microseconds` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.microseconds?view=net-11.0)
+ * `MicrosecondsPerDay` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.microsecondsperday?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ * `MicrosecondsPerHour` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.microsecondsperhour?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ * `MicrosecondsPerMillisecond` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.microsecondspermillisecond?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ * `MicrosecondsPerMinute` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.microsecondsperminute?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ * `MicrosecondsPerSecond` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.microsecondspersecond?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ * `MillisecondsPerDay` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.millisecondsperday?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ * `MillisecondsPerHour` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.millisecondsperhour?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ * `MillisecondsPerMinute` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.millisecondsperminute?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ * `MillisecondsPerSecond` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.millisecondspersecond?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ * `MinutesPerDay` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.minutesperday?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ * `MinutesPerHour` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.minutesperhour?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
* `Nanoseconds` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.nanoseconds?view=net-11.0)
+ * `SecondsPerDay` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.secondsperday?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ * `SecondsPerHour` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.secondsperhour?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ * `SecondsPerMinute` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.secondsperminute?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
#### Type
diff --git a/assemblySize.include.md b/assemblySize.include.md
index b4728958..22ffe1c0 100644
--- a/assemblySize.include.md
+++ b/assemblySize.include.md
@@ -2,26 +2,26 @@
| | Empty Assembly | With Polyfill | Diff | Ensure | ArgumentExceptions | StringInterpolation | Nullability |
|----------------|----------------|---------------|-----------|-----------|--------------------|---------------------|-------------|
-| netstandard2.0 | 8.0KB | 365.5KB | +357.5KB | +7.5KB | +5.0KB | +7.5KB | +12.0KB |
-| netstandard2.1 | 8.5KB | 319.5KB | +311.0KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
-| net461 | 8.5KB | 364.5KB | +356.0KB | +7.5KB | +5.0KB | +7.5KB | +12.0KB |
-| net462 | 7.0KB | 368.0KB | +361.0KB | +7.5KB | +6.5KB | +9.0KB | +13.5KB |
-| net47 | 7.0KB | 367.5KB | +360.5KB | +7.5KB | +6.5KB | +9.5KB | +14.0KB |
-| net471 | 8.5KB | 365.5KB | +357.0KB | +8.5KB | +6.5KB | +9.0KB | +13.5KB |
-| net472 | 8.5KB | 365.5KB | +357.0KB | +7.5KB | +5.0KB | +7.5KB | +12.0KB |
-| net48 | 8.5KB | 365.5KB | +357.0KB | +7.5KB | +5.0KB | +7.5KB | +12.0KB |
-| net481 | 8.5KB | 365.5KB | +357.0KB | +7.5KB | +5.0KB | +7.5KB | +12.0KB |
-| netcoreapp2.0 | 9.0KB | 343.0KB | +334.0KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
-| netcoreapp2.1 | 9.0KB | 323.0KB | +314.0KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
-| netcoreapp2.2 | 9.0KB | 323.0KB | +314.0KB | +9.0KB | +6.5KB | +9.0KB | +14.0KB |
-| netcoreapp3.0 | 9.5KB | 319.0KB | +309.5KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
-| netcoreapp3.1 | 9.5KB | 317.5KB | +308.0KB | +8.5KB | +6.5KB | +9.0KB | +13.5KB |
-| net5.0 | 9.5KB | 281.5KB | +272.0KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
-| net6.0 | 10.0KB | 223.0KB | +213.0KB | +9.5KB | +7.0KB | +512bytes | +3.5KB |
-| net7.0 | 10.0KB | 188.0KB | +178.0KB | +9.5KB | +6.0KB | +1.0KB | +3.5KB |
-| net8.0 | 9.5KB | 158.5KB | +149.0KB | +8.5KB | | +512bytes | +3.0KB |
-| net9.0 | 9.5KB | 111.5KB | +102.0KB | +8.5KB | | +512bytes | +3.5KB |
-| net10.0 | 10.0KB | 89.5KB | +79.5KB | +8.5KB | | +512bytes | +3.0KB |
+| netstandard2.0 | 8.0KB | 368.0KB | +360.0KB | +7.5KB | +5.5KB | +7.5KB | +12.0KB |
+| netstandard2.1 | 8.5KB | 322.0KB | +313.5KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
+| net461 | 8.5KB | 365.5KB | +357.0KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
+| net462 | 7.0KB | 370.5KB | +363.5KB | +7.5KB | +6.5KB | +9.0KB | +12.0KB |
+| net47 | 7.0KB | 370.0KB | +363.0KB | +7.5KB | +6.5KB | +9.5KB | +12.0KB |
+| net471 | 8.5KB | 368.0KB | +359.5KB | +8.5KB | +6.5KB | +9.0KB | +13.5KB |
+| net472 | 8.5KB | 366.5KB | +358.0KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
+| net48 | 8.5KB | 366.5KB | +358.0KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
+| net481 | 8.5KB | 366.5KB | +358.0KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
+| netcoreapp2.0 | 9.0KB | 345.5KB | +336.5KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
+| netcoreapp2.1 | 9.0KB | 325.5KB | +316.5KB | +9.0KB | +6.5KB | +9.0KB | +14.0KB |
+| netcoreapp2.2 | 9.0KB | 325.5KB | +316.5KB | +9.0KB | +6.5KB | +9.0KB | +14.0KB |
+| netcoreapp3.0 | 9.5KB | 321.5KB | +312.0KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
+| netcoreapp3.1 | 9.5KB | 320.0KB | +310.5KB | +8.5KB | +6.5KB | +9.0KB | +13.5KB |
+| net5.0 | 9.5KB | 284.0KB | +274.5KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
+| net6.0 | 10.0KB | 225.5KB | +215.5KB | +10.0KB | +7.0KB | +512bytes | +3.5KB |
+| net7.0 | 10.0KB | 191.0KB | +181.0KB | +9.0KB | +5.5KB | +512bytes | +3.0KB |
+| net8.0 | 9.5KB | 161.0KB | +151.5KB | +8.5KB | | +512bytes | +3.0KB |
+| net9.0 | 9.5KB | 114.0KB | +104.5KB | +8.5KB | | +512bytes | +3.5KB |
+| net10.0 | 10.0KB | 92.0KB | +82.0KB | +8.5KB | | +512bytes | +3.5KB |
| net11.0 | 10.0KB | 21.0KB | +11.0KB | +9.0KB | | +512bytes | +3.5KB |
@@ -29,24 +29,24 @@
| | Empty Assembly | With Polyfill | Diff | Ensure | ArgumentExceptions | StringInterpolation | Nullability |
|----------------|----------------|---------------|-----------|-----------|--------------------|---------------------|-------------|
-| netstandard2.0 | 8.0KB | 536.9KB | +528.9KB | +15.2KB | +6.7KB | +12.4KB | +17.4KB |
-| netstandard2.1 | 8.5KB | 464.3KB | +455.8KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
-| net461 | 8.5KB | 536.9KB | +528.4KB | +15.2KB | +6.7KB | +12.4KB | +17.4KB |
-| net462 | 7.0KB | 540.4KB | +533.4KB | +15.2KB | +8.2KB | +13.9KB | +18.9KB |
-| net47 | 7.0KB | 539.7KB | +532.7KB | +15.2KB | +8.2KB | +14.4KB | +19.4KB |
-| net471 | 8.5KB | 537.3KB | +528.8KB | +16.2KB | +8.2KB | +13.9KB | +18.9KB |
-| net472 | 8.5KB | 536.2KB | +527.7KB | +15.2KB | +6.7KB | +12.4KB | +17.4KB |
-| net48 | 8.5KB | 536.2KB | +527.7KB | +15.2KB | +6.7KB | +12.4KB | +17.4KB |
-| net481 | 8.5KB | 536.2KB | +527.7KB | +15.2KB | +6.7KB | +12.4KB | +17.4KB |
-| netcoreapp2.0 | 9.0KB | 503.8KB | +494.8KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
-| netcoreapp2.1 | 9.0KB | 471.5KB | +462.5KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
-| netcoreapp2.2 | 9.0KB | 471.5KB | +462.5KB | +16.7KB | +8.2KB | +13.9KB | +19.4KB |
-| netcoreapp3.0 | 9.5KB | 460.8KB | +451.3KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
-| netcoreapp3.1 | 9.5KB | 459.2KB | +449.7KB | +16.2KB | +8.2KB | +13.9KB | +18.9KB |
-| net5.0 | 9.5KB | 405.1KB | +395.6KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
-| net6.0 | 10.0KB | 326.7KB | +316.7KB | +17.2KB | +8.7KB | +1.1KB | +4.2KB |
-| net7.0 | 10.0KB | 273.4KB | +263.4KB | +17.1KB | +7.4KB | +1.6KB | +4.2KB |
-| net8.0 | 9.5KB | 230.0KB | +220.5KB | +16.0KB | +299bytes | +1.1KB | +3.7KB |
-| net9.0 | 9.5KB | 161.9KB | +152.4KB | +16.0KB | | +1.1KB | +4.2KB |
-| net10.0 | 10.0KB | 131.2KB | +121.2KB | +16.0KB | | +1.1KB | +3.7KB |
+| netstandard2.0 | 8.0KB | 539.5KB | +531.5KB | +15.2KB | +7.2KB | +12.4KB | +17.4KB |
+| netstandard2.1 | 8.5KB | 466.9KB | +458.4KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
+| net461 | 8.5KB | 538.1KB | +529.6KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
+| net462 | 7.0KB | 543.1KB | +536.1KB | +15.2KB | +8.2KB | +13.9KB | +17.4KB |
+| net47 | 7.0KB | 542.3KB | +535.3KB | +15.2KB | +8.2KB | +14.4KB | +17.4KB |
+| net471 | 8.5KB | 540.0KB | +531.5KB | +16.2KB | +8.2KB | +13.9KB | +18.9KB |
+| net472 | 8.5KB | 537.4KB | +528.9KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
+| net48 | 8.5KB | 537.4KB | +528.9KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
+| net481 | 8.5KB | 537.4KB | +528.9KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
+| netcoreapp2.0 | 9.0KB | 506.5KB | +497.5KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
+| netcoreapp2.1 | 9.0KB | 474.1KB | +465.1KB | +16.7KB | +8.2KB | +13.9KB | +19.4KB |
+| netcoreapp2.2 | 9.0KB | 474.1KB | +465.1KB | +16.7KB | +8.2KB | +13.9KB | +19.4KB |
+| netcoreapp3.0 | 9.5KB | 463.4KB | +453.9KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
+| netcoreapp3.1 | 9.5KB | 461.9KB | +452.4KB | +16.2KB | +8.2KB | +13.9KB | +18.9KB |
+| net5.0 | 9.5KB | 407.8KB | +398.3KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
+| net6.0 | 10.0KB | 329.3KB | +319.3KB | +17.7KB | +8.7KB | +1.1KB | +4.2KB |
+| net7.0 | 10.0KB | 276.5KB | +266.5KB | +16.6KB | +6.9KB | +1.1KB | +3.7KB |
+| net8.0 | 9.5KB | 232.7KB | +223.2KB | +16.0KB | +299bytes | +1.1KB | +3.7KB |
+| net9.0 | 9.5KB | 164.6KB | +155.1KB | +16.0KB | | +1.1KB | +4.2KB |
+| net10.0 | 10.0KB | 133.9KB | +123.9KB | +16.0KB | | +1.1KB | +4.2KB |
| net11.0 | 10.0KB | 30.9KB | +20.9KB | +16.5KB | | +1.1KB | +4.2KB |
diff --git a/readme.md b/readme.md
index 7dda33f6..20c95f08 100644
--- a/readme.md
+++ b/readme.md
@@ -13,34 +13,34 @@ The package targets `netstandard2.0` and is designed to support the following ru
* `uap10`
-**API count: 1073**
+**API count: 1088**
### Per Target Framework
| Target | APIs |
| -- | -- |
-| `net461` | 1004 |
-| `net462` | 1004 |
-| `net47` | 1003 |
-| `net471` | 1002 |
-| `net472` | 998 |
-| `net48` | 998 |
-| `net481` | 998 |
-| `netstandard2.0` | 1000 |
-| `netstandard2.1` | 853 |
-| `netcoreapp2.0` | 923 |
-| `netcoreapp2.1` | 864 |
-| `netcoreapp2.2` | 864 |
-| `netcoreapp3.0` | 825 |
-| `netcoreapp3.1` | 824 |
-| `net5.0` | 696 |
-| `net6.0` | 597 |
-| `net7.0` | 444 |
-| `net8.0` | 323 |
-| `net9.0` | 229 |
-| `net10.0` | 175 |
+| `net461` | 1005 |
+| `net462` | 1005 |
+| `net47` | 1004 |
+| `net471` | 1003 |
+| `net472` | 999 |
+| `net48` | 999 |
+| `net481` | 999 |
+| `netstandard2.0` | 1001 |
+| `netstandard2.1` | 854 |
+| `netcoreapp2.0` | 924 |
+| `netcoreapp2.1` | 865 |
+| `netcoreapp2.2` | 865 |
+| `netcoreapp3.0` | 826 |
+| `netcoreapp3.1` | 825 |
+| `net5.0` | 697 |
+| `net6.0` | 598 |
+| `net7.0` | 445 |
+| `net8.0` | 324 |
+| `net9.0` | 230 |
+| `net10.0` | 176 |
| `net11.0` | 58 |
-| `uap10.0` | 990 |
+| `uap10.0` | 991 |
@@ -96,26 +96,26 @@ This project uses features from the newest stable SDK and C# language. As such c
| | Empty Assembly | With Polyfill | Diff | Ensure | ArgumentExceptions | StringInterpolation | Nullability |
|----------------|----------------|---------------|-----------|-----------|--------------------|---------------------|-------------|
-| netstandard2.0 | 8.0KB | 365.5KB | +357.5KB | +7.5KB | +5.0KB | +7.5KB | +12.0KB |
-| netstandard2.1 | 8.5KB | 319.5KB | +311.0KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
-| net461 | 8.5KB | 364.5KB | +356.0KB | +7.5KB | +5.0KB | +7.5KB | +12.0KB |
-| net462 | 7.0KB | 368.0KB | +361.0KB | +7.5KB | +6.5KB | +9.0KB | +13.5KB |
-| net47 | 7.0KB | 367.5KB | +360.5KB | +7.5KB | +6.5KB | +9.5KB | +14.0KB |
-| net471 | 8.5KB | 365.5KB | +357.0KB | +8.5KB | +6.5KB | +9.0KB | +13.5KB |
-| net472 | 8.5KB | 365.5KB | +357.0KB | +7.5KB | +5.0KB | +7.5KB | +12.0KB |
-| net48 | 8.5KB | 365.5KB | +357.0KB | +7.5KB | +5.0KB | +7.5KB | +12.0KB |
-| net481 | 8.5KB | 365.5KB | +357.0KB | +7.5KB | +5.0KB | +7.5KB | +12.0KB |
-| netcoreapp2.0 | 9.0KB | 343.0KB | +334.0KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
-| netcoreapp2.1 | 9.0KB | 323.0KB | +314.0KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
-| netcoreapp2.2 | 9.0KB | 323.0KB | +314.0KB | +9.0KB | +6.5KB | +9.0KB | +14.0KB |
-| netcoreapp3.0 | 9.5KB | 319.0KB | +309.5KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
-| netcoreapp3.1 | 9.5KB | 317.5KB | +308.0KB | +8.5KB | +6.5KB | +9.0KB | +13.5KB |
-| net5.0 | 9.5KB | 281.5KB | +272.0KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
-| net6.0 | 10.0KB | 223.0KB | +213.0KB | +9.5KB | +7.0KB | +512bytes | +3.5KB |
-| net7.0 | 10.0KB | 188.0KB | +178.0KB | +9.5KB | +6.0KB | +1.0KB | +3.5KB |
-| net8.0 | 9.5KB | 158.5KB | +149.0KB | +8.5KB | | +512bytes | +3.0KB |
-| net9.0 | 9.5KB | 111.5KB | +102.0KB | +8.5KB | | +512bytes | +3.5KB |
-| net10.0 | 10.0KB | 89.5KB | +79.5KB | +8.5KB | | +512bytes | +3.0KB |
+| netstandard2.0 | 8.0KB | 368.0KB | +360.0KB | +7.5KB | +5.5KB | +7.5KB | +12.0KB |
+| netstandard2.1 | 8.5KB | 322.0KB | +313.5KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
+| net461 | 8.5KB | 365.5KB | +357.0KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
+| net462 | 7.0KB | 370.5KB | +363.5KB | +7.5KB | +6.5KB | +9.0KB | +12.0KB |
+| net47 | 7.0KB | 370.0KB | +363.0KB | +7.5KB | +6.5KB | +9.5KB | +12.0KB |
+| net471 | 8.5KB | 368.0KB | +359.5KB | +8.5KB | +6.5KB | +9.0KB | +13.5KB |
+| net472 | 8.5KB | 366.5KB | +358.0KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
+| net48 | 8.5KB | 366.5KB | +358.0KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
+| net481 | 8.5KB | 366.5KB | +358.0KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
+| netcoreapp2.0 | 9.0KB | 345.5KB | +336.5KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
+| netcoreapp2.1 | 9.0KB | 325.5KB | +316.5KB | +9.0KB | +6.5KB | +9.0KB | +14.0KB |
+| netcoreapp2.2 | 9.0KB | 325.5KB | +316.5KB | +9.0KB | +6.5KB | +9.0KB | +14.0KB |
+| netcoreapp3.0 | 9.5KB | 321.5KB | +312.0KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
+| netcoreapp3.1 | 9.5KB | 320.0KB | +310.5KB | +8.5KB | +6.5KB | +9.0KB | +13.5KB |
+| net5.0 | 9.5KB | 284.0KB | +274.5KB | +9.0KB | +6.5KB | +9.0KB | +13.5KB |
+| net6.0 | 10.0KB | 225.5KB | +215.5KB | +10.0KB | +7.0KB | +512bytes | +3.5KB |
+| net7.0 | 10.0KB | 191.0KB | +181.0KB | +9.0KB | +5.5KB | +512bytes | +3.0KB |
+| net8.0 | 9.5KB | 161.0KB | +151.5KB | +8.5KB | | +512bytes | +3.0KB |
+| net9.0 | 9.5KB | 114.0KB | +104.5KB | +8.5KB | | +512bytes | +3.5KB |
+| net10.0 | 10.0KB | 92.0KB | +82.0KB | +8.5KB | | +512bytes | +3.5KB |
| net11.0 | 10.0KB | 21.0KB | +11.0KB | +9.0KB | | +512bytes | +3.5KB |
@@ -123,26 +123,26 @@ This project uses features from the newest stable SDK and C# language. As such c
| | Empty Assembly | With Polyfill | Diff | Ensure | ArgumentExceptions | StringInterpolation | Nullability |
|----------------|----------------|---------------|-----------|-----------|--------------------|---------------------|-------------|
-| netstandard2.0 | 8.0KB | 536.9KB | +528.9KB | +15.2KB | +6.7KB | +12.4KB | +17.4KB |
-| netstandard2.1 | 8.5KB | 464.3KB | +455.8KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
-| net461 | 8.5KB | 536.9KB | +528.4KB | +15.2KB | +6.7KB | +12.4KB | +17.4KB |
-| net462 | 7.0KB | 540.4KB | +533.4KB | +15.2KB | +8.2KB | +13.9KB | +18.9KB |
-| net47 | 7.0KB | 539.7KB | +532.7KB | +15.2KB | +8.2KB | +14.4KB | +19.4KB |
-| net471 | 8.5KB | 537.3KB | +528.8KB | +16.2KB | +8.2KB | +13.9KB | +18.9KB |
-| net472 | 8.5KB | 536.2KB | +527.7KB | +15.2KB | +6.7KB | +12.4KB | +17.4KB |
-| net48 | 8.5KB | 536.2KB | +527.7KB | +15.2KB | +6.7KB | +12.4KB | +17.4KB |
-| net481 | 8.5KB | 536.2KB | +527.7KB | +15.2KB | +6.7KB | +12.4KB | +17.4KB |
-| netcoreapp2.0 | 9.0KB | 503.8KB | +494.8KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
-| netcoreapp2.1 | 9.0KB | 471.5KB | +462.5KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
-| netcoreapp2.2 | 9.0KB | 471.5KB | +462.5KB | +16.7KB | +8.2KB | +13.9KB | +19.4KB |
-| netcoreapp3.0 | 9.5KB | 460.8KB | +451.3KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
-| netcoreapp3.1 | 9.5KB | 459.2KB | +449.7KB | +16.2KB | +8.2KB | +13.9KB | +18.9KB |
-| net5.0 | 9.5KB | 405.1KB | +395.6KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
-| net6.0 | 10.0KB | 326.7KB | +316.7KB | +17.2KB | +8.7KB | +1.1KB | +4.2KB |
-| net7.0 | 10.0KB | 273.4KB | +263.4KB | +17.1KB | +7.4KB | +1.6KB | +4.2KB |
-| net8.0 | 9.5KB | 230.0KB | +220.5KB | +16.0KB | +299bytes | +1.1KB | +3.7KB |
-| net9.0 | 9.5KB | 161.9KB | +152.4KB | +16.0KB | | +1.1KB | +4.2KB |
-| net10.0 | 10.0KB | 131.2KB | +121.2KB | +16.0KB | | +1.1KB | +3.7KB |
+| netstandard2.0 | 8.0KB | 539.5KB | +531.5KB | +15.2KB | +7.2KB | +12.4KB | +17.4KB |
+| netstandard2.1 | 8.5KB | 466.9KB | +458.4KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
+| net461 | 8.5KB | 538.1KB | +529.6KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
+| net462 | 7.0KB | 543.1KB | +536.1KB | +15.2KB | +8.2KB | +13.9KB | +17.4KB |
+| net47 | 7.0KB | 542.3KB | +535.3KB | +15.2KB | +8.2KB | +14.4KB | +17.4KB |
+| net471 | 8.5KB | 540.0KB | +531.5KB | +16.2KB | +8.2KB | +13.9KB | +18.9KB |
+| net472 | 8.5KB | 537.4KB | +528.9KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
+| net48 | 8.5KB | 537.4KB | +528.9KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
+| net481 | 8.5KB | 537.4KB | +528.9KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
+| netcoreapp2.0 | 9.0KB | 506.5KB | +497.5KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
+| netcoreapp2.1 | 9.0KB | 474.1KB | +465.1KB | +16.7KB | +8.2KB | +13.9KB | +19.4KB |
+| netcoreapp2.2 | 9.0KB | 474.1KB | +465.1KB | +16.7KB | +8.2KB | +13.9KB | +19.4KB |
+| netcoreapp3.0 | 9.5KB | 463.4KB | +453.9KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
+| netcoreapp3.1 | 9.5KB | 461.9KB | +452.4KB | +16.2KB | +8.2KB | +13.9KB | +18.9KB |
+| net5.0 | 9.5KB | 407.8KB | +398.3KB | +16.7KB | +8.2KB | +13.9KB | +18.9KB |
+| net6.0 | 10.0KB | 329.3KB | +319.3KB | +17.7KB | +8.7KB | +1.1KB | +4.2KB |
+| net7.0 | 10.0KB | 276.5KB | +266.5KB | +16.6KB | +6.9KB | +1.1KB | +3.7KB |
+| net8.0 | 9.5KB | 232.7KB | +223.2KB | +16.0KB | +299bytes | +1.1KB | +3.7KB |
+| net9.0 | 9.5KB | 164.6KB | +155.1KB | +16.0KB | | +1.1KB | +4.2KB |
+| net10.0 | 10.0KB | 133.9KB | +123.9KB | +16.0KB | | +1.1KB | +4.2KB |
| net11.0 | 10.0KB | 30.9KB | +20.9KB | +16.5KB | | +1.1KB | +4.2KB |
@@ -1928,8 +1928,38 @@ The class `Polyfill` includes the following extension methods:
* `TimeSpan FromMilliseconds(long, long)` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.frommilliseconds?view=net-11.0#system-timespan-frommilliseconds(system-int64-system-int64))
* `TimeSpan FromMinutes(int, int, int, int)` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.fromminutes?view=net-11.0#system-timespan-fromminutes(system-int32-system-int32-system-int32-system-int32))
* `TimeSpan FromSeconds(long, long, long)` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.fromseconds?view=net-11.0#system-timespan-fromseconds(system-int64-system-int64-system-int64))
+ * `HoursPerDay` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.hoursperday?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
* `Microseconds` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.microseconds?view=net-11.0)
+ * `MicrosecondsPerDay` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.microsecondsperday?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ * `MicrosecondsPerHour` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.microsecondsperhour?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ * `MicrosecondsPerMillisecond` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.microsecondspermillisecond?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ * `MicrosecondsPerMinute` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.microsecondsperminute?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ * `MicrosecondsPerSecond` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.microsecondspersecond?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ * `MillisecondsPerDay` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.millisecondsperday?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ * `MillisecondsPerHour` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.millisecondsperhour?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ * `MillisecondsPerMinute` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.millisecondsperminute?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ * `MillisecondsPerSecond` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.millisecondspersecond?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ * `MinutesPerDay` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.minutesperday?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ * `MinutesPerHour` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.minutesperhour?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
* `Nanoseconds` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.nanoseconds?view=net-11.0)
+ * `SecondsPerDay` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.secondsperday?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ * `SecondsPerHour` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.secondsperhour?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ * `SecondsPerMinute` [reference](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.secondsperminute?view=net-11.0)
+ * Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
#### Type
diff --git a/src/Consume/Consume.cs b/src/Consume/Consume.cs
index a15d1ce2..e0447ab9 100644
--- a/src/Consume/Consume.cs
+++ b/src/Consume/Consume.cs
@@ -1935,6 +1935,22 @@ void TimeSpan_Methods()
timeSpan = TimeSpan.FromSeconds(1L);
timeSpan = TimeSpan.FromSeconds(1L, 500L);
timeSpan = TimeSpan.FromMicroseconds(1000L);
+
+ int hoursPerDay = TimeSpan.HoursPerDay;
+ long microsecondsPerDay = TimeSpan.MicrosecondsPerDay;
+ long microsecondsPerHour = TimeSpan.MicrosecondsPerHour;
+ long microsecondsPerMillisecond = TimeSpan.MicrosecondsPerMillisecond;
+ long microsecondsPerMinute = TimeSpan.MicrosecondsPerMinute;
+ long microsecondsPerSecond = TimeSpan.MicrosecondsPerSecond;
+ long millisecondsPerDay = TimeSpan.MillisecondsPerDay;
+ long millisecondsPerHour = TimeSpan.MillisecondsPerHour;
+ long millisecondsPerMinute = TimeSpan.MillisecondsPerMinute;
+ long millisecondsPerSecond = TimeSpan.MillisecondsPerSecond;
+ long minutesPerDay = TimeSpan.MinutesPerDay;
+ long minutesPerHour = TimeSpan.MinutesPerHour;
+ long secondsPerDay = TimeSpan.SecondsPerDay;
+ long secondsPerHour = TimeSpan.SecondsPerHour;
+ long secondsPerMinute = TimeSpan.SecondsPerMinute;
}
async Task TextWriter_Methods()
diff --git a/src/Polyfill/TimeSpanPolyfill.cs b/src/Polyfill/TimeSpanPolyfill.cs
index 28c1b58f..143dd697 100644
--- a/src/Polyfill/TimeSpanPolyfill.cs
+++ b/src/Polyfill/TimeSpanPolyfill.cs
@@ -56,6 +56,111 @@ static TimeSpan TicksFromMicroseconds(decimal totalMicroseconds)
extension(TimeSpan)
{
+ ///
+ /// The number of hours in 1 day.
+ ///
+ //Link: https://learn.microsoft.com/en-us/dotnet/api/system.timespan.hoursperday?view=net-11.0
+ //Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ public static int HoursPerDay => 24;
+
+ ///
+ /// The number of microseconds in 1 day.
+ ///
+ //Link: https://learn.microsoft.com/en-us/dotnet/api/system.timespan.microsecondsperday?view=net-11.0
+ //Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ public static long MicrosecondsPerDay => 86_400_000_000;
+
+ ///
+ /// The number of microseconds in 1 hour.
+ ///
+ //Link: https://learn.microsoft.com/en-us/dotnet/api/system.timespan.microsecondsperhour?view=net-11.0
+ //Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ public static long MicrosecondsPerHour => 3_600_000_000;
+
+ ///
+ /// The number of microseconds in 1 millisecond.
+ ///
+ //Link: https://learn.microsoft.com/en-us/dotnet/api/system.timespan.microsecondspermillisecond?view=net-11.0
+ //Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ public static long MicrosecondsPerMillisecond => 1_000;
+
+ ///
+ /// The number of microseconds in 1 minute.
+ ///
+ //Link: https://learn.microsoft.com/en-us/dotnet/api/system.timespan.microsecondsperminute?view=net-11.0
+ //Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ public static long MicrosecondsPerMinute => 60_000_000;
+
+ ///
+ /// The number of microseconds in 1 second.
+ ///
+ //Link: https://learn.microsoft.com/en-us/dotnet/api/system.timespan.microsecondspersecond?view=net-11.0
+ //Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ public static long MicrosecondsPerSecond => 1_000_000;
+
+ ///
+ /// The number of milliseconds in 1 day.
+ ///
+ //Link: https://learn.microsoft.com/en-us/dotnet/api/system.timespan.millisecondsperday?view=net-11.0
+ //Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ public static long MillisecondsPerDay => 86_400_000;
+
+ ///
+ /// The number of milliseconds in 1 hour.
+ ///
+ //Link: https://learn.microsoft.com/en-us/dotnet/api/system.timespan.millisecondsperhour?view=net-11.0
+ //Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ public static long MillisecondsPerHour => 3_600_000;
+
+ ///
+ /// The number of milliseconds in 1 minute.
+ ///
+ //Link: https://learn.microsoft.com/en-us/dotnet/api/system.timespan.millisecondsperminute?view=net-11.0
+ //Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ public static long MillisecondsPerMinute => 60_000;
+
+ ///
+ /// The number of milliseconds in 1 second.
+ ///
+ //Link: https://learn.microsoft.com/en-us/dotnet/api/system.timespan.millisecondspersecond?view=net-11.0
+ //Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ public static long MillisecondsPerSecond => 1_000;
+
+ ///
+ /// The number of minutes in 1 day.
+ ///
+ //Link: https://learn.microsoft.com/en-us/dotnet/api/system.timespan.minutesperday?view=net-11.0
+ //Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ public static long MinutesPerDay => 1_440;
+
+ ///
+ /// The number of minutes in 1 hour.
+ ///
+ //Link: https://learn.microsoft.com/en-us/dotnet/api/system.timespan.minutesperhour?view=net-11.0
+ //Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ public static long MinutesPerHour => 60;
+
+ ///
+ /// The number of seconds in 1 day.
+ ///
+ //Link: https://learn.microsoft.com/en-us/dotnet/api/system.timespan.secondsperday?view=net-11.0
+ //Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ public static long SecondsPerDay => 86_400;
+
+ ///
+ /// The number of seconds in 1 hour.
+ ///
+ //Link: https://learn.microsoft.com/en-us/dotnet/api/system.timespan.secondsperhour?view=net-11.0
+ //Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ public static long SecondsPerHour => 3_600;
+
+ ///
+ /// The number of seconds in 1 minute.
+ ///
+ //Link: https://learn.microsoft.com/en-us/dotnet/api/system.timespan.secondsperminute?view=net-11.0
+ //Note: A property rather than a const, since extension members cannot declare constants, so it cannot be used in a constant expression.
+ public static long SecondsPerMinute => 60;
+
///
/// Initializes a new instance of the structure to a specified number of days, hours, minutes, seconds, milliseconds, and microseconds.
///
diff --git a/src/Split/net461/TimeSpanPolyfill.cs b/src/Split/net461/TimeSpanPolyfill.cs
index 59d7c797..23233402 100644
--- a/src/Split/net461/TimeSpanPolyfill.cs
+++ b/src/Split/net461/TimeSpanPolyfill.cs
@@ -40,6 +40,66 @@ static TimeSpan TicksFromMicroseconds(decimal totalMicroseconds)
}
extension(TimeSpan)
{
+ ///
+ /// The number of hours in 1 day.
+ ///
+ public static int HoursPerDay => 24;
+ ///
+ /// The number of microseconds in 1 day.
+ ///
+ public static long MicrosecondsPerDay => 86_400_000_000;
+ ///
+ /// The number of microseconds in 1 hour.
+ ///
+ public static long MicrosecondsPerHour => 3_600_000_000;
+ ///
+ /// The number of microseconds in 1 millisecond.
+ ///
+ public static long MicrosecondsPerMillisecond => 1_000;
+ ///
+ /// The number of microseconds in 1 minute.
+ ///
+ public static long MicrosecondsPerMinute => 60_000_000;
+ ///
+ /// The number of microseconds in 1 second.
+ ///
+ public static long MicrosecondsPerSecond => 1_000_000;
+ ///
+ /// The number of milliseconds in 1 day.
+ ///
+ public static long MillisecondsPerDay => 86_400_000;
+ ///
+ /// The number of milliseconds in 1 hour.
+ ///
+ public static long MillisecondsPerHour => 3_600_000;
+ ///
+ /// The number of milliseconds in 1 minute.
+ ///
+ public static long MillisecondsPerMinute => 60_000;
+ ///
+ /// The number of milliseconds in 1 second.
+ ///
+ public static long MillisecondsPerSecond => 1_000;
+ ///
+ /// The number of minutes in 1 day.
+ ///
+ public static long MinutesPerDay => 1_440;
+ ///
+ /// The number of minutes in 1 hour.
+ ///
+ public static long MinutesPerHour => 60;
+ ///
+ /// The number of seconds in 1 day.
+ ///
+ public static long SecondsPerDay => 86_400;
+ ///
+ /// The number of seconds in 1 hour.
+ ///
+ public static long SecondsPerHour => 3_600;
+ ///
+ /// The number of seconds in 1 minute.
+ ///
+ public static long SecondsPerMinute => 60;
///
/// Initializes a new instance of the structure to a specified number of days, hours, minutes, seconds, milliseconds, and microseconds.
///
diff --git a/src/Split/net462/TimeSpanPolyfill.cs b/src/Split/net462/TimeSpanPolyfill.cs
index 59d7c797..23233402 100644
--- a/src/Split/net462/TimeSpanPolyfill.cs
+++ b/src/Split/net462/TimeSpanPolyfill.cs
@@ -40,6 +40,66 @@ static TimeSpan TicksFromMicroseconds(decimal totalMicroseconds)
}
extension(TimeSpan)
{
+ ///
+ /// The number of hours in 1 day.
+ ///
+ public static int HoursPerDay => 24;
+ ///
+ /// The number of microseconds in 1 day.
+ ///
+ public static long MicrosecondsPerDay => 86_400_000_000;
+ ///
+ /// The number of microseconds in 1 hour.
+ ///
+ public static long MicrosecondsPerHour => 3_600_000_000;
+ ///
+ /// The number of microseconds in 1 millisecond.
+ ///
+ public static long MicrosecondsPerMillisecond => 1_000;
+ ///
+ /// The number of microseconds in 1 minute.
+ ///
+ public static long MicrosecondsPerMinute => 60_000_000;
+ ///
+ /// The number of microseconds in 1 second.
+ ///
+ public static long MicrosecondsPerSecond => 1_000_000;
+ ///
+ /// The number of milliseconds in 1 day.
+ ///
+ public static long MillisecondsPerDay => 86_400_000;
+ ///
+ /// The number of milliseconds in 1 hour.
+ ///
+ public static long MillisecondsPerHour => 3_600_000;
+ ///
+ /// The number of milliseconds in 1 minute.
+ ///
+ public static long MillisecondsPerMinute => 60_000;
+ ///
+ /// The number of milliseconds in 1 second.
+ ///
+ public static long MillisecondsPerSecond => 1_000;
+ ///
+ /// The number of minutes in 1 day.
+ ///
+ public static long MinutesPerDay => 1_440;
+ ///
+ /// The number of minutes in 1 hour.
+ ///
+ public static long MinutesPerHour => 60;
+ ///
+ /// The number of seconds in 1 day.
+ ///
+ public static long SecondsPerDay => 86_400;
+ ///
+ /// The number of seconds in 1 hour.
+ ///
+ public static long SecondsPerHour => 3_600;
+ ///
+ /// The number of seconds in 1 minute.
+ ///
+ public static long SecondsPerMinute => 60;
///
/// Initializes a new instance of the structure to a specified number of days, hours, minutes, seconds, milliseconds, and microseconds.
///
diff --git a/src/Split/net47/TimeSpanPolyfill.cs b/src/Split/net47/TimeSpanPolyfill.cs
index 59d7c797..23233402 100644
--- a/src/Split/net47/TimeSpanPolyfill.cs
+++ b/src/Split/net47/TimeSpanPolyfill.cs
@@ -40,6 +40,66 @@ static TimeSpan TicksFromMicroseconds(decimal totalMicroseconds)
}
extension(TimeSpan)
{
+ ///
+ /// The number of hours in 1 day.
+ ///
+ public static int HoursPerDay => 24;
+ ///
+ /// The number of microseconds in 1 day.
+ ///
+ public static long MicrosecondsPerDay => 86_400_000_000;
+ ///
+ /// The number of microseconds in 1 hour.
+ ///
+ public static long MicrosecondsPerHour => 3_600_000_000;
+ ///
+ /// The number of microseconds in 1 millisecond.
+ ///
+ public static long MicrosecondsPerMillisecond => 1_000;
+ ///
+ /// The number of microseconds in 1 minute.
+ ///
+ public static long MicrosecondsPerMinute => 60_000_000;
+ ///
+ /// The number of microseconds in 1 second.
+ ///
+ public static long MicrosecondsPerSecond => 1_000_000;
+ ///
+ /// The number of milliseconds in 1 day.
+ ///
+ public static long MillisecondsPerDay => 86_400_000;
+ ///
+ /// The number of milliseconds in 1 hour.
+ ///
+ public static long MillisecondsPerHour => 3_600_000;
+ ///
+ /// The number of milliseconds in 1 minute.
+ ///
+ public static long MillisecondsPerMinute => 60_000;
+ ///
+ /// The number of milliseconds in 1 second.
+ ///
+ public static long MillisecondsPerSecond => 1_000;
+ ///
+ /// The number of minutes in 1 day.
+ ///
+ public static long MinutesPerDay => 1_440;
+ ///
+ /// The number of minutes in 1 hour.
+ ///
+ public static long MinutesPerHour => 60;
+ ///
+ /// The number of seconds in 1 day.
+ ///
+ public static long SecondsPerDay => 86_400;
+ ///
+ /// The number of seconds in 1 hour.
+ ///
+ public static long SecondsPerHour => 3_600;
+ ///
+ /// The number of seconds in 1 minute.
+ ///
+ public static long SecondsPerMinute => 60;
///
/// Initializes a new instance of the structure to a specified number of days, hours, minutes, seconds, milliseconds, and microseconds.
///
diff --git a/src/Split/net471/TimeSpanPolyfill.cs b/src/Split/net471/TimeSpanPolyfill.cs
index 59d7c797..23233402 100644
--- a/src/Split/net471/TimeSpanPolyfill.cs
+++ b/src/Split/net471/TimeSpanPolyfill.cs
@@ -40,6 +40,66 @@ static TimeSpan TicksFromMicroseconds(decimal totalMicroseconds)
}
extension(TimeSpan)
{
+ ///
+ /// The number of hours in 1 day.
+ ///
+ public static int HoursPerDay => 24;
+ ///
+ /// The number of microseconds in 1 day.
+ ///
+ public static long MicrosecondsPerDay => 86_400_000_000;
+ ///
+ /// The number of microseconds in 1 hour.
+ ///
+ public static long MicrosecondsPerHour => 3_600_000_000;
+ ///
+ /// The number of microseconds in 1 millisecond.
+ ///
+ public static long MicrosecondsPerMillisecond => 1_000;
+ ///
+ /// The number of microseconds in 1 minute.
+ ///
+ public static long MicrosecondsPerMinute => 60_000_000;
+ ///
+ /// The number of microseconds in 1 second.
+ ///
+ public static long MicrosecondsPerSecond => 1_000_000;
+ ///
+ /// The number of milliseconds in 1 day.
+ ///
+ public static long MillisecondsPerDay => 86_400_000;
+ ///
+ /// The number of milliseconds in 1 hour.
+ ///
+ public static long MillisecondsPerHour => 3_600_000;
+ ///
+ /// The number of milliseconds in 1 minute.
+ ///
+ public static long MillisecondsPerMinute => 60_000;
+ ///
+ /// The number of milliseconds in 1 second.
+ ///
+ public static long MillisecondsPerSecond => 1_000;
+ ///
+ /// The number of minutes in 1 day.
+ ///
+ public static long MinutesPerDay => 1_440;
+ ///
+ /// The number of minutes in 1 hour.
+ ///
+ public static long MinutesPerHour => 60;
+ ///
+ /// The number of seconds in 1 day.
+ ///
+ public static long SecondsPerDay => 86_400;
+ ///
+ /// The number of seconds in 1 hour.
+ ///
+ public static long SecondsPerHour => 3_600;
+ ///
+ /// The number of seconds in 1 minute.
+ ///
+ public static long SecondsPerMinute => 60;
///
/// Initializes a new instance of the structure to a specified number of days, hours, minutes, seconds, milliseconds, and microseconds.
///
diff --git a/src/Split/net472/TimeSpanPolyfill.cs b/src/Split/net472/TimeSpanPolyfill.cs
index 59d7c797..23233402 100644
--- a/src/Split/net472/TimeSpanPolyfill.cs
+++ b/src/Split/net472/TimeSpanPolyfill.cs
@@ -40,6 +40,66 @@ static TimeSpan TicksFromMicroseconds(decimal totalMicroseconds)
}
extension(TimeSpan)
{
+ ///
+ /// The number of hours in 1 day.
+ ///
+ public static int HoursPerDay => 24;
+ ///
+ /// The number of microseconds in 1 day.
+ ///
+ public static long MicrosecondsPerDay => 86_400_000_000;
+ ///
+ /// The number of microseconds in 1 hour.
+ ///
+ public static long MicrosecondsPerHour => 3_600_000_000;
+ ///
+ /// The number of microseconds in 1 millisecond.
+ ///
+ public static long MicrosecondsPerMillisecond => 1_000;
+ ///
+ /// The number of microseconds in 1 minute.
+ ///
+ public static long MicrosecondsPerMinute => 60_000_000;
+ ///
+ /// The number of microseconds in 1 second.
+ ///
+ public static long MicrosecondsPerSecond => 1_000_000;
+ ///
+ /// The number of milliseconds in 1 day.
+ ///
+ public static long MillisecondsPerDay => 86_400_000;
+ ///
+ /// The number of milliseconds in 1 hour.
+ ///
+ public static long MillisecondsPerHour => 3_600_000;
+ ///
+ /// The number of milliseconds in 1 minute.
+ ///
+ public static long MillisecondsPerMinute => 60_000;
+ ///
+ /// The number of milliseconds in 1 second.
+ ///
+ public static long MillisecondsPerSecond => 1_000;
+ ///
+ /// The number of minutes in 1 day.
+ ///
+ public static long MinutesPerDay => 1_440;
+ ///
+ /// The number of minutes in 1 hour.
+ ///
+ public static long MinutesPerHour => 60;
+ ///
+ /// The number of seconds in 1 day.
+ ///
+ public static long SecondsPerDay => 86_400;
+ ///
+ /// The number of seconds in 1 hour.
+ ///
+ public static long SecondsPerHour => 3_600;
+ ///
+ /// The number of seconds in 1 minute.
+ ///
+ public static long SecondsPerMinute => 60;
///
/// Initializes a new instance of the structure to a specified number of days, hours, minutes, seconds, milliseconds, and microseconds.
///
diff --git a/src/Split/net48/TimeSpanPolyfill.cs b/src/Split/net48/TimeSpanPolyfill.cs
index 59d7c797..23233402 100644
--- a/src/Split/net48/TimeSpanPolyfill.cs
+++ b/src/Split/net48/TimeSpanPolyfill.cs
@@ -40,6 +40,66 @@ static TimeSpan TicksFromMicroseconds(decimal totalMicroseconds)
}
extension(TimeSpan)
{
+ ///
+ /// The number of hours in 1 day.
+ ///
+ public static int HoursPerDay => 24;
+ ///
+ /// The number of microseconds in 1 day.
+ ///
+ public static long MicrosecondsPerDay => 86_400_000_000;
+ ///
+ /// The number of microseconds in 1 hour.
+ ///
+ public static long MicrosecondsPerHour => 3_600_000_000;
+ ///
+ /// The number of microseconds in 1 millisecond.
+ ///
+ public static long MicrosecondsPerMillisecond => 1_000;
+ ///
+ /// The number of microseconds in 1 minute.
+ ///
+ public static long MicrosecondsPerMinute => 60_000_000;
+ ///
+ /// The number of microseconds in 1 second.
+ ///
+ public static long MicrosecondsPerSecond => 1_000_000;
+ ///
+ /// The number of milliseconds in 1 day.
+ ///
+ public static long MillisecondsPerDay => 86_400_000;
+ ///
+ /// The number of milliseconds in 1 hour.
+ ///
+ public static long MillisecondsPerHour => 3_600_000;
+ ///
+ /// The number of milliseconds in 1 minute.
+ ///
+ public static long MillisecondsPerMinute => 60_000;
+ ///
+ /// The number of milliseconds in 1 second.
+ ///
+ public static long MillisecondsPerSecond => 1_000;
+ ///
+ /// The number of minutes in 1 day.
+ ///
+ public static long MinutesPerDay => 1_440;
+ ///
+ /// The number of minutes in 1 hour.
+ ///
+ public static long MinutesPerHour => 60;
+ ///
+ /// The number of seconds in 1 day.
+ ///
+ public static long SecondsPerDay => 86_400;
+ ///
+ /// The number of seconds in 1 hour.
+ ///
+ public static long SecondsPerHour => 3_600;
+ ///
+ /// The number of seconds in 1 minute.
+ ///
+ public static long SecondsPerMinute => 60;
///
/// Initializes a new instance of the structure to a specified number of days, hours, minutes, seconds, milliseconds, and microseconds.
///
diff --git a/src/Split/net481/TimeSpanPolyfill.cs b/src/Split/net481/TimeSpanPolyfill.cs
index 59d7c797..23233402 100644
--- a/src/Split/net481/TimeSpanPolyfill.cs
+++ b/src/Split/net481/TimeSpanPolyfill.cs
@@ -40,6 +40,66 @@ static TimeSpan TicksFromMicroseconds(decimal totalMicroseconds)
}
extension(TimeSpan)
{
+ ///
+ /// The number of hours in 1 day.
+ ///
+ public static int HoursPerDay => 24;
+ ///
+ /// The number of microseconds in 1 day.
+ ///
+ public static long MicrosecondsPerDay => 86_400_000_000;
+ ///
+ /// The number of microseconds in 1 hour.
+ ///
+ public static long MicrosecondsPerHour => 3_600_000_000;
+ ///
+ /// The number of microseconds in 1 millisecond.
+ ///
+ public static long MicrosecondsPerMillisecond => 1_000;
+ ///
+ /// The number of microseconds in 1 minute.
+ ///
+ public static long MicrosecondsPerMinute => 60_000_000;
+ ///
+ /// The number of microseconds in 1 second.
+ ///
+ public static long MicrosecondsPerSecond => 1_000_000;
+ ///
+ /// The number of milliseconds in 1 day.
+ ///
+ public static long MillisecondsPerDay => 86_400_000;
+ ///
+ /// The number of milliseconds in 1 hour.
+ ///
+ public static long MillisecondsPerHour => 3_600_000;
+ ///
+ /// The number of milliseconds in 1 minute.
+ ///
+ public static long MillisecondsPerMinute => 60_000;
+ ///
+ /// The number of milliseconds in 1 second.
+ ///
+ public static long MillisecondsPerSecond => 1_000;
+ ///
+ /// The number of minutes in 1 day.
+ ///
+ public static long MinutesPerDay => 1_440;
+ ///
+ /// The number of minutes in 1 hour.
+ ///
+ public static long MinutesPerHour => 60;
+ ///
+ /// The number of seconds in 1 day.
+ ///
+ public static long SecondsPerDay => 86_400;
+ ///
+ /// The number of seconds in 1 hour.
+ ///
+ public static long SecondsPerHour => 3_600;
+ ///
+ /// The number of seconds in 1 minute.
+ ///
+ public static long SecondsPerMinute => 60;
///
/// Initializes a new instance of the structure to a specified number of days, hours, minutes, seconds, milliseconds, and microseconds.
///
diff --git a/src/Split/net5.0/TimeSpanPolyfill.cs b/src/Split/net5.0/TimeSpanPolyfill.cs
index 59d7c797..23233402 100644
--- a/src/Split/net5.0/TimeSpanPolyfill.cs
+++ b/src/Split/net5.0/TimeSpanPolyfill.cs
@@ -40,6 +40,66 @@ static TimeSpan TicksFromMicroseconds(decimal totalMicroseconds)
}
extension(TimeSpan)
{
+ ///
+ /// The number of hours in 1 day.
+ ///
+ public static int HoursPerDay => 24;
+ ///
+ /// The number of microseconds in 1 day.
+ ///
+ public static long MicrosecondsPerDay => 86_400_000_000;
+ ///
+ /// The number of microseconds in 1 hour.
+ ///
+ public static long MicrosecondsPerHour => 3_600_000_000;
+ ///
+ /// The number of microseconds in 1 millisecond.
+ ///
+ public static long MicrosecondsPerMillisecond => 1_000;
+ ///
+ /// The number of microseconds in 1 minute.
+ ///
+ public static long MicrosecondsPerMinute => 60_000_000;
+ ///
+ /// The number of microseconds in 1 second.
+ ///
+ public static long MicrosecondsPerSecond => 1_000_000;
+ ///
+ /// The number of milliseconds in 1 day.
+ ///
+ public static long MillisecondsPerDay => 86_400_000;
+ ///
+ /// The number of milliseconds in 1 hour.
+ ///
+ public static long MillisecondsPerHour => 3_600_000;
+ ///
+ /// The number of milliseconds in 1 minute.
+ ///
+ public static long MillisecondsPerMinute => 60_000;
+ ///
+ /// The number of milliseconds in 1 second.
+ ///
+ public static long MillisecondsPerSecond => 1_000;
+ ///
+ /// The number of minutes in 1 day.
+ ///
+ public static long MinutesPerDay => 1_440;
+ ///
+ /// The number of minutes in 1 hour.
+ ///
+ public static long MinutesPerHour => 60;
+ ///
+ /// The number of seconds in 1 day.
+ ///
+ public static long SecondsPerDay => 86_400;
+ ///
+ /// The number of seconds in 1 hour.
+ ///
+ public static long SecondsPerHour => 3_600;
+ ///
+ /// The number of seconds in 1 minute.
+ ///
+ public static long SecondsPerMinute => 60;
///
/// Initializes a new instance of the structure to a specified number of days, hours, minutes, seconds, milliseconds, and microseconds.
///
diff --git a/src/Split/net6.0/TimeSpanPolyfill.cs b/src/Split/net6.0/TimeSpanPolyfill.cs
index 59d7c797..23233402 100644
--- a/src/Split/net6.0/TimeSpanPolyfill.cs
+++ b/src/Split/net6.0/TimeSpanPolyfill.cs
@@ -40,6 +40,66 @@ static TimeSpan TicksFromMicroseconds(decimal totalMicroseconds)
}
extension(TimeSpan)
{
+ ///
+ /// The number of hours in 1 day.
+ ///
+ public static int HoursPerDay => 24;
+ ///
+ /// The number of microseconds in 1 day.
+ ///
+ public static long MicrosecondsPerDay => 86_400_000_000;
+ ///
+ /// The number of microseconds in 1 hour.
+ ///
+ public static long MicrosecondsPerHour => 3_600_000_000;
+ ///
+ /// The number of microseconds in 1 millisecond.
+ ///
+ public static long MicrosecondsPerMillisecond => 1_000;
+ ///
+ /// The number of microseconds in 1 minute.
+ ///
+ public static long MicrosecondsPerMinute => 60_000_000;
+ ///
+ /// The number of microseconds in 1 second.
+ ///
+ public static long MicrosecondsPerSecond => 1_000_000;
+ ///
+ /// The number of milliseconds in 1 day.
+ ///
+ public static long MillisecondsPerDay => 86_400_000;
+ ///
+ /// The number of milliseconds in 1 hour.
+ ///
+ public static long MillisecondsPerHour => 3_600_000;
+ ///
+ /// The number of milliseconds in 1 minute.
+ ///
+ public static long MillisecondsPerMinute => 60_000;
+ ///
+ /// The number of milliseconds in 1 second.
+ ///
+ public static long MillisecondsPerSecond => 1_000;
+ ///
+ /// The number of minutes in 1 day.
+ ///
+ public static long MinutesPerDay => 1_440;
+ ///
+ /// The number of minutes in 1 hour.
+ ///
+ public static long MinutesPerHour => 60;
+ ///
+ /// The number of seconds in 1 day.
+ ///
+ public static long SecondsPerDay => 86_400;
+ ///
+ /// The number of seconds in 1 hour.
+ ///
+ public static long SecondsPerHour => 3_600;
+ ///
+ /// The number of seconds in 1 minute.
+ ///
+ public static long SecondsPerMinute => 60;
///
/// Initializes a new instance of the structure to a specified number of days, hours, minutes, seconds, milliseconds, and microseconds.
///
diff --git a/src/Split/net7.0/TimeSpanPolyfill.cs b/src/Split/net7.0/TimeSpanPolyfill.cs
index bad6237e..37125cc6 100644
--- a/src/Split/net7.0/TimeSpanPolyfill.cs
+++ b/src/Split/net7.0/TimeSpanPolyfill.cs
@@ -21,6 +21,66 @@ static TimeSpan TicksFromMicroseconds(decimal totalMicroseconds)
}
extension(TimeSpan)
{
+ ///
+ /// The number of hours in 1 day.
+ ///
+ public static int HoursPerDay => 24;
+ ///
+ /// The number of microseconds in 1 day.
+ ///
+ public static long MicrosecondsPerDay => 86_400_000_000;
+ ///
+ /// The number of microseconds in 1 hour.
+ ///
+ public static long MicrosecondsPerHour => 3_600_000_000;
+ ///
+ /// The number of microseconds in 1 millisecond.
+ ///
+ public static long MicrosecondsPerMillisecond => 1_000;
+ ///
+ /// The number of microseconds in 1 minute.
+ ///
+ public static long MicrosecondsPerMinute => 60_000_000;
+ ///
+ /// The number of microseconds in 1 second.
+ ///
+ public static long MicrosecondsPerSecond => 1_000_000;
+ ///
+ /// The number of milliseconds in 1 day.
+ ///
+ public static long MillisecondsPerDay => 86_400_000;
+ ///
+ /// The number of milliseconds in 1 hour.
+ ///
+ public static long MillisecondsPerHour => 3_600_000;
+ ///
+ /// The number of milliseconds in 1 minute.
+ ///
+ public static long MillisecondsPerMinute => 60_000;
+ ///
+ /// The number of milliseconds in 1 second.
+ ///
+ public static long MillisecondsPerSecond => 1_000;
+ ///
+ /// The number of minutes in 1 day.
+ ///
+ public static long MinutesPerDay => 1_440;
+ ///
+ /// The number of minutes in 1 hour.
+ ///
+ public static long MinutesPerHour => 60;
+ ///
+ /// The number of seconds in 1 day.
+ ///
+ public static long SecondsPerDay => 86_400;
+ ///
+ /// The number of seconds in 1 hour.
+ ///
+ public static long SecondsPerHour => 3_600;
+ ///
+ /// The number of seconds in 1 minute.
+ ///
+ public static long SecondsPerMinute => 60;
///
/// Initializes a new instance of the structure to a specified number of days, hours, minutes, seconds, milliseconds, and microseconds.
///
diff --git a/src/Split/net8.0/TimeSpanPolyfill.cs b/src/Split/net8.0/TimeSpanPolyfill.cs
index bad6237e..37125cc6 100644
--- a/src/Split/net8.0/TimeSpanPolyfill.cs
+++ b/src/Split/net8.0/TimeSpanPolyfill.cs
@@ -21,6 +21,66 @@ static TimeSpan TicksFromMicroseconds(decimal totalMicroseconds)
}
extension(TimeSpan)
{
+ ///
+ /// The number of hours in 1 day.
+ ///
+ public static int HoursPerDay => 24;
+ ///
+ /// The number of microseconds in 1 day.
+ ///
+ public static long MicrosecondsPerDay => 86_400_000_000;
+ ///
+ /// The number of microseconds in 1 hour.
+ ///
+ public static long MicrosecondsPerHour => 3_600_000_000;
+ ///
+ /// The number of microseconds in 1 millisecond.
+ ///
+ public static long MicrosecondsPerMillisecond => 1_000;
+ ///
+ /// The number of microseconds in 1 minute.
+ ///
+ public static long MicrosecondsPerMinute => 60_000_000;
+ ///
+ /// The number of microseconds in 1 second.
+ ///
+ public static long MicrosecondsPerSecond => 1_000_000;
+ ///
+ /// The number of milliseconds in 1 day.
+ ///
+ public static long MillisecondsPerDay => 86_400_000;
+ ///
+ /// The number of milliseconds in 1 hour.
+ ///
+ public static long MillisecondsPerHour => 3_600_000;
+ ///
+ /// The number of milliseconds in 1 minute.
+ ///
+ public static long MillisecondsPerMinute => 60_000;
+ ///
+ /// The number of milliseconds in 1 second.
+ ///
+ public static long MillisecondsPerSecond => 1_000;
+ ///
+ /// The number of minutes in 1 day.
+ ///
+ public static long MinutesPerDay => 1_440;
+ ///
+ /// The number of minutes in 1 hour.
+ ///
+ public static long MinutesPerHour => 60;
+ ///
+ /// The number of seconds in 1 day.
+ ///
+ public static long SecondsPerDay => 86_400;
+ ///
+ /// The number of seconds in 1 hour.
+ ///
+ public static long SecondsPerHour => 3_600;
+ ///
+ /// The number of seconds in 1 minute.
+ ///
+ public static long SecondsPerMinute => 60;
///
/// Initializes a new instance of the structure to a specified number of days, hours, minutes, seconds, milliseconds, and microseconds.
///
diff --git a/src/Split/netcoreapp2.0/TimeSpanPolyfill.cs b/src/Split/netcoreapp2.0/TimeSpanPolyfill.cs
index 59d7c797..23233402 100644
--- a/src/Split/netcoreapp2.0/TimeSpanPolyfill.cs
+++ b/src/Split/netcoreapp2.0/TimeSpanPolyfill.cs
@@ -40,6 +40,66 @@ static TimeSpan TicksFromMicroseconds(decimal totalMicroseconds)
}
extension(TimeSpan)
{
+ ///
+ /// The number of hours in 1 day.
+ ///
+ public static int HoursPerDay => 24;
+ ///
+ /// The number of microseconds in 1 day.
+ ///
+ public static long MicrosecondsPerDay => 86_400_000_000;
+ ///
+ /// The number of microseconds in 1 hour.
+ ///
+ public static long MicrosecondsPerHour => 3_600_000_000;
+ ///
+ /// The number of microseconds in 1 millisecond.
+ ///
+ public static long MicrosecondsPerMillisecond => 1_000;
+ ///
+ /// The number of microseconds in 1 minute.
+ ///
+ public static long MicrosecondsPerMinute => 60_000_000;
+ ///
+ /// The number of microseconds in 1 second.
+ ///
+ public static long MicrosecondsPerSecond => 1_000_000;
+ ///
+ /// The number of milliseconds in 1 day.
+ ///
+ public static long MillisecondsPerDay => 86_400_000;
+ ///
+ /// The number of milliseconds in 1 hour.
+ ///
+ public static long MillisecondsPerHour => 3_600_000;
+ ///
+ /// The number of milliseconds in 1 minute.
+ ///
+ public static long MillisecondsPerMinute => 60_000;
+ ///
+ /// The number of milliseconds in 1 second.
+ ///
+ public static long MillisecondsPerSecond => 1_000;
+ ///
+ /// The number of minutes in 1 day.
+ ///
+ public static long MinutesPerDay => 1_440;
+ ///
+ /// The number of minutes in 1 hour.
+ ///
+ public static long MinutesPerHour => 60;
+ ///
+ /// The number of seconds in 1 day.
+ ///
+ public static long SecondsPerDay => 86_400;
+ ///
+ /// The number of seconds in 1 hour.
+ ///
+ public static long SecondsPerHour => 3_600;
+ ///
+ /// The number of seconds in 1 minute.
+ ///
+ public static long SecondsPerMinute => 60;
///
/// Initializes a new instance of the structure to a specified number of days, hours, minutes, seconds, milliseconds, and microseconds.
///
diff --git a/src/Split/netcoreapp2.1/TimeSpanPolyfill.cs b/src/Split/netcoreapp2.1/TimeSpanPolyfill.cs
index 59d7c797..23233402 100644
--- a/src/Split/netcoreapp2.1/TimeSpanPolyfill.cs
+++ b/src/Split/netcoreapp2.1/TimeSpanPolyfill.cs
@@ -40,6 +40,66 @@ static TimeSpan TicksFromMicroseconds(decimal totalMicroseconds)
}
extension(TimeSpan)
{
+ ///
+ /// The number of hours in 1 day.
+ ///
+ public static int HoursPerDay => 24;
+ ///
+ /// The number of microseconds in 1 day.
+ ///
+ public static long MicrosecondsPerDay => 86_400_000_000;
+ ///
+ /// The number of microseconds in 1 hour.
+ ///
+ public static long MicrosecondsPerHour => 3_600_000_000;
+ ///
+ /// The number of microseconds in 1 millisecond.
+ ///
+ public static long MicrosecondsPerMillisecond => 1_000;
+ ///
+ /// The number of microseconds in 1 minute.
+ ///
+ public static long MicrosecondsPerMinute => 60_000_000;
+ ///
+ /// The number of microseconds in 1 second.
+ ///
+ public static long MicrosecondsPerSecond => 1_000_000;
+ ///
+ /// The number of milliseconds in 1 day.
+ ///
+ public static long MillisecondsPerDay => 86_400_000;
+ ///
+ /// The number of milliseconds in 1 hour.
+ ///
+ public static long MillisecondsPerHour => 3_600_000;
+ ///
+ /// The number of milliseconds in 1 minute.
+ ///
+ public static long MillisecondsPerMinute => 60_000;
+ ///
+ /// The number of milliseconds in 1 second.
+ ///
+ public static long MillisecondsPerSecond => 1_000;
+ ///
+ /// The number of minutes in 1 day.
+ ///
+ public static long MinutesPerDay => 1_440;
+ ///
+ /// The number of minutes in 1 hour.
+ ///
+ public static long MinutesPerHour => 60;
+ ///
+ /// The number of seconds in 1 day.
+ ///
+ public static long SecondsPerDay => 86_400;
+ ///
+ /// The number of seconds in 1 hour.
+ ///
+ public static long SecondsPerHour => 3_600;
+ ///
+ /// The number of seconds in 1 minute.
+ ///
+ public static long SecondsPerMinute => 60;
///
/// Initializes a new instance of the structure to a specified number of days, hours, minutes, seconds, milliseconds, and microseconds.
///
diff --git a/src/Split/netcoreapp2.2/TimeSpanPolyfill.cs b/src/Split/netcoreapp2.2/TimeSpanPolyfill.cs
index 59d7c797..23233402 100644
--- a/src/Split/netcoreapp2.2/TimeSpanPolyfill.cs
+++ b/src/Split/netcoreapp2.2/TimeSpanPolyfill.cs
@@ -40,6 +40,66 @@ static TimeSpan TicksFromMicroseconds(decimal totalMicroseconds)
}
extension(TimeSpan)
{
+ ///
+ /// The number of hours in 1 day.
+ ///
+ public static int HoursPerDay => 24;
+ ///
+ /// The number of microseconds in 1 day.
+ ///
+ public static long MicrosecondsPerDay => 86_400_000_000;
+ ///
+ /// The number of microseconds in 1 hour.
+ ///
+ public static long MicrosecondsPerHour => 3_600_000_000;
+ ///
+ /// The number of microseconds in 1 millisecond.
+ ///
+ public static long MicrosecondsPerMillisecond => 1_000;
+ ///
+ /// The number of microseconds in 1 minute.
+ ///
+ public static long MicrosecondsPerMinute => 60_000_000;
+ ///
+ /// The number of microseconds in 1 second.
+ ///
+ public static long MicrosecondsPerSecond => 1_000_000;
+ ///
+ /// The number of milliseconds in 1 day.
+ ///
+ public static long MillisecondsPerDay => 86_400_000;
+ ///
+ /// The number of milliseconds in 1 hour.
+ ///
+ public static long MillisecondsPerHour => 3_600_000;
+ ///
+ /// The number of milliseconds in 1 minute.
+ ///
+ public static long MillisecondsPerMinute => 60_000;
+ ///
+ /// The number of milliseconds in 1 second.
+ ///
+ public static long MillisecondsPerSecond => 1_000;
+ ///
+ /// The number of minutes in 1 day.
+ ///
+ public static long MinutesPerDay => 1_440;
+ ///
+ /// The number of minutes in 1 hour.
+ ///
+ public static long MinutesPerHour => 60;
+ ///
+ /// The number of seconds in 1 day.
+ ///
+ public static long SecondsPerDay => 86_400;
+ ///
+ /// The number of seconds in 1 hour.
+ ///
+ public static long SecondsPerHour => 3_600;
+ ///
+ /// The number of seconds in 1 minute.
+ ///
+ public static long SecondsPerMinute => 60;
///
/// Initializes a new instance of the structure to a specified number of days, hours, minutes, seconds, milliseconds, and microseconds.
///
diff --git a/src/Split/netcoreapp3.0/TimeSpanPolyfill.cs b/src/Split/netcoreapp3.0/TimeSpanPolyfill.cs
index 59d7c797..23233402 100644
--- a/src/Split/netcoreapp3.0/TimeSpanPolyfill.cs
+++ b/src/Split/netcoreapp3.0/TimeSpanPolyfill.cs
@@ -40,6 +40,66 @@ static TimeSpan TicksFromMicroseconds(decimal totalMicroseconds)
}
extension(TimeSpan)
{
+ ///
+ /// The number of hours in 1 day.
+ ///
+ public static int HoursPerDay => 24;
+ ///
+ /// The number of microseconds in 1 day.
+ ///
+ public static long MicrosecondsPerDay => 86_400_000_000;
+ ///
+ /// The number of microseconds in 1 hour.
+ ///
+ public static long MicrosecondsPerHour => 3_600_000_000;
+ ///
+ /// The number of microseconds in 1 millisecond.
+ ///
+ public static long MicrosecondsPerMillisecond => 1_000;
+ ///
+ /// The number of microseconds in 1 minute.
+ ///
+ public static long MicrosecondsPerMinute => 60_000_000;
+ ///
+ /// The number of microseconds in 1 second.
+ ///
+ public static long MicrosecondsPerSecond => 1_000_000;
+ ///
+ /// The number of milliseconds in 1 day.
+ ///
+ public static long MillisecondsPerDay => 86_400_000;
+ ///
+ /// The number of milliseconds in 1 hour.
+ ///
+ public static long MillisecondsPerHour => 3_600_000;
+ ///
+ /// The number of milliseconds in 1 minute.
+ ///
+ public static long MillisecondsPerMinute => 60_000;
+ ///
+ /// The number of milliseconds in 1 second.
+ ///
+ public static long MillisecondsPerSecond => 1_000;
+ ///
+ /// The number of minutes in 1 day.
+ ///
+ public static long MinutesPerDay => 1_440;
+ ///
+ /// The number of minutes in 1 hour.
+ ///
+ public static long MinutesPerHour => 60;
+ ///
+ /// The number of seconds in 1 day.
+ ///
+ public static long SecondsPerDay => 86_400;
+ ///
+ /// The number of seconds in 1 hour.
+ ///
+ public static long SecondsPerHour => 3_600;
+ ///
+ /// The number of seconds in 1 minute.
+ ///
+ public static long SecondsPerMinute => 60;
///
/// Initializes a new instance of the structure to a specified number of days, hours, minutes, seconds, milliseconds, and microseconds.
///
diff --git a/src/Split/netcoreapp3.1/TimeSpanPolyfill.cs b/src/Split/netcoreapp3.1/TimeSpanPolyfill.cs
index 59d7c797..23233402 100644
--- a/src/Split/netcoreapp3.1/TimeSpanPolyfill.cs
+++ b/src/Split/netcoreapp3.1/TimeSpanPolyfill.cs
@@ -40,6 +40,66 @@ static TimeSpan TicksFromMicroseconds(decimal totalMicroseconds)
}
extension(TimeSpan)
{
+ ///
+ /// The number of hours in 1 day.
+ ///
+ public static int HoursPerDay => 24;
+ ///
+ /// The number of microseconds in 1 day.
+ ///
+ public static long MicrosecondsPerDay => 86_400_000_000;
+ ///
+ /// The number of microseconds in 1 hour.
+ ///
+ public static long MicrosecondsPerHour => 3_600_000_000;
+ ///
+ /// The number of microseconds in 1 millisecond.
+ ///
+ public static long MicrosecondsPerMillisecond => 1_000;
+ ///
+ /// The number of microseconds in 1 minute.
+ ///
+ public static long MicrosecondsPerMinute => 60_000_000;
+ ///
+ /// The number of microseconds in 1 second.
+ ///
+ public static long MicrosecondsPerSecond => 1_000_000;
+ ///
+ /// The number of milliseconds in 1 day.
+ ///
+ public static long MillisecondsPerDay => 86_400_000;
+ ///
+ /// The number of milliseconds in 1 hour.
+ ///
+ public static long MillisecondsPerHour => 3_600_000;
+ ///
+ /// The number of milliseconds in 1 minute.
+ ///
+ public static long MillisecondsPerMinute => 60_000;
+ ///
+ /// The number of milliseconds in 1 second.
+ ///
+ public static long MillisecondsPerSecond => 1_000;
+ ///
+ /// The number of minutes in 1 day.
+ ///
+ public static long MinutesPerDay => 1_440;
+ ///
+ /// The number of minutes in 1 hour.
+ ///
+ public static long MinutesPerHour => 60;
+ ///
+ /// The number of seconds in 1 day.
+ ///
+ public static long SecondsPerDay => 86_400;
+ ///
+ /// The number of seconds in 1 hour.
+ ///
+ public static long SecondsPerHour => 3_600;
+ ///
+ /// The number of seconds in 1 minute.
+ ///
+ public static long SecondsPerMinute => 60;
///
/// Initializes a new instance of the structure to a specified number of days, hours, minutes, seconds, milliseconds, and microseconds.
///
diff --git a/src/Split/netstandard2.0/TimeSpanPolyfill.cs b/src/Split/netstandard2.0/TimeSpanPolyfill.cs
index 59d7c797..23233402 100644
--- a/src/Split/netstandard2.0/TimeSpanPolyfill.cs
+++ b/src/Split/netstandard2.0/TimeSpanPolyfill.cs
@@ -40,6 +40,66 @@ static TimeSpan TicksFromMicroseconds(decimal totalMicroseconds)
}
extension(TimeSpan)
{
+ ///
+ /// The number of hours in 1 day.
+ ///
+ public static int HoursPerDay => 24;
+ ///
+ /// The number of microseconds in 1 day.
+ ///
+ public static long MicrosecondsPerDay => 86_400_000_000;
+ ///
+ /// The number of microseconds in 1 hour.
+ ///
+ public static long MicrosecondsPerHour => 3_600_000_000;
+ ///
+ /// The number of microseconds in 1 millisecond.
+ ///
+ public static long MicrosecondsPerMillisecond => 1_000;
+ ///
+ /// The number of microseconds in 1 minute.
+ ///
+ public static long MicrosecondsPerMinute => 60_000_000;
+ ///
+ /// The number of microseconds in 1 second.
+ ///
+ public static long MicrosecondsPerSecond => 1_000_000;
+ ///
+ /// The number of milliseconds in 1 day.
+ ///
+ public static long MillisecondsPerDay => 86_400_000;
+ ///
+ /// The number of milliseconds in 1 hour.
+ ///
+ public static long MillisecondsPerHour => 3_600_000;
+ ///
+ /// The number of milliseconds in 1 minute.
+ ///
+ public static long MillisecondsPerMinute => 60_000;
+ ///
+ /// The number of milliseconds in 1 second.
+ ///
+ public static long MillisecondsPerSecond => 1_000;
+ ///
+ /// The number of minutes in 1 day.
+ ///
+ public static long MinutesPerDay => 1_440;
+ ///
+ /// The number of minutes in 1 hour.
+ ///
+ public static long MinutesPerHour => 60;
+ ///
+ /// The number of seconds in 1 day.
+ ///
+ public static long SecondsPerDay => 86_400;
+ ///
+ /// The number of seconds in 1 hour.
+ ///
+ public static long SecondsPerHour => 3_600;
+ ///
+ /// The number of seconds in 1 minute.
+ ///
+ public static long SecondsPerMinute => 60;
///
/// Initializes a new instance of the structure to a specified number of days, hours, minutes, seconds, milliseconds, and microseconds.
///
diff --git a/src/Split/netstandard2.1/TimeSpanPolyfill.cs b/src/Split/netstandard2.1/TimeSpanPolyfill.cs
index 59d7c797..23233402 100644
--- a/src/Split/netstandard2.1/TimeSpanPolyfill.cs
+++ b/src/Split/netstandard2.1/TimeSpanPolyfill.cs
@@ -40,6 +40,66 @@ static TimeSpan TicksFromMicroseconds(decimal totalMicroseconds)
}
extension(TimeSpan)
{
+ ///
+ /// The number of hours in 1 day.
+ ///
+ public static int HoursPerDay => 24;
+ ///
+ /// The number of microseconds in 1 day.
+ ///
+ public static long MicrosecondsPerDay => 86_400_000_000;
+ ///
+ /// The number of microseconds in 1 hour.
+ ///
+ public static long MicrosecondsPerHour => 3_600_000_000;
+ ///
+ /// The number of microseconds in 1 millisecond.
+ ///
+ public static long MicrosecondsPerMillisecond => 1_000;
+ ///
+ /// The number of microseconds in 1 minute.
+ ///
+ public static long MicrosecondsPerMinute => 60_000_000;
+ ///
+ /// The number of microseconds in 1 second.
+ ///
+ public static long MicrosecondsPerSecond => 1_000_000;
+ ///
+ /// The number of milliseconds in 1 day.
+ ///
+ public static long MillisecondsPerDay => 86_400_000;
+ ///
+ /// The number of milliseconds in 1 hour.
+ ///
+ public static long MillisecondsPerHour => 3_600_000;
+ ///
+ /// The number of milliseconds in 1 minute.
+ ///
+ public static long MillisecondsPerMinute => 60_000;
+ ///
+ /// The number of milliseconds in 1 second.
+ ///
+ public static long MillisecondsPerSecond => 1_000;
+ ///
+ /// The number of minutes in 1 day.
+ ///
+ public static long MinutesPerDay => 1_440;
+ ///
+ /// The number of minutes in 1 hour.
+ ///
+ public static long MinutesPerHour => 60;
+ ///
+ /// The number of seconds in 1 day.
+ ///
+ public static long SecondsPerDay => 86_400;
+ ///
+ /// The number of seconds in 1 hour.
+ ///
+ public static long SecondsPerHour => 3_600;
+ ///
+ /// The number of seconds in 1 minute.
+ ///
+ public static long SecondsPerMinute => 60;
///
/// Initializes a new instance of the structure to a specified number of days, hours, minutes, seconds, milliseconds, and microseconds.
///
diff --git a/src/Split/uap10.0/TimeSpanPolyfill.cs b/src/Split/uap10.0/TimeSpanPolyfill.cs
index 59d7c797..23233402 100644
--- a/src/Split/uap10.0/TimeSpanPolyfill.cs
+++ b/src/Split/uap10.0/TimeSpanPolyfill.cs
@@ -40,6 +40,66 @@ static TimeSpan TicksFromMicroseconds(decimal totalMicroseconds)
}
extension(TimeSpan)
{
+ ///
+ /// The number of hours in 1 day.
+ ///
+ public static int HoursPerDay => 24;
+ ///
+ /// The number of microseconds in 1 day.
+ ///
+ public static long MicrosecondsPerDay => 86_400_000_000;
+ ///
+ /// The number of microseconds in 1 hour.
+ ///
+ public static long MicrosecondsPerHour => 3_600_000_000;
+ ///
+ /// The number of microseconds in 1 millisecond.
+ ///
+ public static long MicrosecondsPerMillisecond => 1_000;
+ ///
+ /// The number of microseconds in 1 minute.
+ ///
+ public static long MicrosecondsPerMinute => 60_000_000;
+ ///
+ /// The number of microseconds in 1 second.
+ ///
+ public static long MicrosecondsPerSecond => 1_000_000;
+ ///
+ /// The number of milliseconds in 1 day.
+ ///
+ public static long MillisecondsPerDay => 86_400_000;
+ ///
+ /// The number of milliseconds in 1 hour.
+ ///
+ public static long MillisecondsPerHour => 3_600_000;
+ ///
+ /// The number of milliseconds in 1 minute.
+ ///
+ public static long MillisecondsPerMinute => 60_000;
+ ///
+ /// The number of milliseconds in 1 second.
+ ///
+ public static long MillisecondsPerSecond => 1_000;
+ ///
+ /// The number of minutes in 1 day.
+ ///
+ public static long MinutesPerDay => 1_440;
+ ///
+ /// The number of minutes in 1 hour.
+ ///
+ public static long MinutesPerHour => 60;
+ ///
+ /// The number of seconds in 1 day.
+ ///
+ public static long SecondsPerDay => 86_400;
+ ///
+ /// The number of seconds in 1 hour.
+ ///
+ public static long SecondsPerHour => 3_600;
+ ///
+ /// The number of seconds in 1 minute.
+ ///
+ public static long SecondsPerMinute => 60;
///
/// Initializes a new instance of the structure to a specified number of days, hours, minutes, seconds, milliseconds, and microseconds.
///
diff --git a/src/Tests/TimeSpanPolyfillTests.cs b/src/Tests/TimeSpanPolyfillTests.cs
index e1ad1464..08d3b30d 100644
--- a/src/Tests/TimeSpanPolyfillTests.cs
+++ b/src/Tests/TimeSpanPolyfillTests.cs
@@ -98,4 +98,43 @@ public async Task FromMicroseconds_Long()
var ts = TimeSpan.FromMicroseconds(1000L);
await Assert.That(ts.TotalMilliseconds).IsEqualTo(1.0);
}
+
+ [Test]
+ public async Task UnitConstants()
+ {
+ await Assert.That(TimeSpan.HoursPerDay).IsEqualTo(24);
+
+ await Assert.That(TimeSpan.MicrosecondsPerMillisecond).IsEqualTo(1_000L);
+ await Assert.That(TimeSpan.MicrosecondsPerSecond).IsEqualTo(1_000_000L);
+ await Assert.That(TimeSpan.MicrosecondsPerMinute).IsEqualTo(60_000_000L);
+ await Assert.That(TimeSpan.MicrosecondsPerHour).IsEqualTo(3_600_000_000L);
+ await Assert.That(TimeSpan.MicrosecondsPerDay).IsEqualTo(86_400_000_000L);
+
+ await Assert.That(TimeSpan.MillisecondsPerSecond).IsEqualTo(1_000L);
+ await Assert.That(TimeSpan.MillisecondsPerMinute).IsEqualTo(60_000L);
+ await Assert.That(TimeSpan.MillisecondsPerHour).IsEqualTo(3_600_000L);
+ await Assert.That(TimeSpan.MillisecondsPerDay).IsEqualTo(86_400_000L);
+
+ await Assert.That(TimeSpan.SecondsPerMinute).IsEqualTo(60L);
+ await Assert.That(TimeSpan.SecondsPerHour).IsEqualTo(3_600L);
+ await Assert.That(TimeSpan.SecondsPerDay).IsEqualTo(86_400L);
+
+ await Assert.That(TimeSpan.MinutesPerHour).IsEqualTo(60L);
+ await Assert.That(TimeSpan.MinutesPerDay).IsEqualTo(1_440L);
+ }
+
+ // cross-check against the TicksPer* constants, which have been in the BCL since forever
+ [Test]
+ public async Task UnitConstants_AgreeWithTicksPer()
+ {
+ // TicksPerMicrosecond is itself net7 only, so compare through milliseconds instead
+ await Assert.That(TimeSpan.MicrosecondsPerSecond).IsEqualTo(TimeSpan.MicrosecondsPerMillisecond * TimeSpan.MillisecondsPerSecond);
+ await Assert.That(TimeSpan.MillisecondsPerSecond * TimeSpan.TicksPerMillisecond).IsEqualTo(TimeSpan.TicksPerSecond);
+ await Assert.That(TimeSpan.SecondsPerMinute * TimeSpan.TicksPerSecond).IsEqualTo(TimeSpan.TicksPerMinute);
+ await Assert.That(TimeSpan.MinutesPerHour * TimeSpan.TicksPerMinute).IsEqualTo(TimeSpan.TicksPerHour);
+ await Assert.That(TimeSpan.HoursPerDay * TimeSpan.TicksPerHour).IsEqualTo(TimeSpan.TicksPerDay);
+ await Assert.That(TimeSpan.SecondsPerDay).IsEqualTo(TimeSpan.SecondsPerHour * TimeSpan.HoursPerDay);
+ await Assert.That(TimeSpan.MillisecondsPerDay).IsEqualTo(TimeSpan.MillisecondsPerHour * TimeSpan.HoursPerDay);
+ await Assert.That(TimeSpan.MicrosecondsPerDay).IsEqualTo(TimeSpan.MicrosecondsPerHour * TimeSpan.HoursPerDay);
+ }
}