PhoenixmlDb.Core
XsDateTime
Represents an xs:dateTime value with explicit timezone tracking and support for extended years outside the .NET range.
#XsDateTime
Namespace: PhoenixmlDb.Xdm
Represents an xs:dateTime value with explicit timezone tracking and support for extended years outside the .NET range.
Unlike , this type distinguishes between "no timezone" and "UTC timezone" (Z). In XML Schema, 2024-01-15T10:00:00 (no timezone) and 2024-01-15T10:00:00Z (UTC) are semantically different — the former uses the implicit timezone for comparisons, while the latter is explicitly UTC. Extended years: XML Schema allows years outside the 1-9999 range (including year 0 and negative years in the proleptic Gregorian calendar). When is non-null, it holds the true year while 's year is clamped to a valid .NET range for time-of-day storage. Comparison: Follows the XPath Functions and Operators specification. Values with timezones are normalized to UTC; values without timezones use the implicit (system) timezone.
#Constructors
##ctor(DateTimeOffset,Boolean)
Represents an xs:dateTime value with explicit timezone tracking and support for extended years outside the .NET range.
Unlike , this type distinguishes between "no timezone" and "UTC timezone" (Z). In XML Schema, 2024-01-15T10:00:00 (no timezone) and 2024-01-15T10:00:00Z (UTC) are semantically different — the former uses the implicit timezone for comparisons, while the latter is explicitly UTC. Extended years: XML Schema allows years outside the 1-9999 range (including year 0 and negative years in the proleptic Gregorian calendar). When is non-null, it holds the true year while 's year is clamped to a valid .NET range for time-of-day storage. Comparison: Follows the XPath Functions and Operators specification. Values with timezones are normalized to UTC; values without timezones use the implicit (system) timezone.
#Properties
| Name | Description |
|---|---|
EffectiveYear
|
The effective year, using ExtendedYear if available, otherwise Value.Year. |
ExtendedYear
|
Extended year for dateTimes outside the .NET DateTimeOffset range (years < 1 or > 9999). When non-null, this is the true year; Value.Year is clamped for time storage. |
FractionalTicks
|
Fractional seconds preserved from parsing (sub-tick precision not needed, but format is preserved). |
#Methods
#Add(TimeSpan)
Adds a duration (dayTimeDuration) using a proleptic day-number conversion so that crossings below year 1 are handled uniformly. Whole days are added via the day-number path; the remaining time-of-day is applied with day carry.
#AddMonths(Int64)
Adds (or subtracts, when negative) a number of months using proleptic-Gregorian month arithmetic on the effective year, clamping the day to the new month's length.
#CivilFromDays(Int64)
Converts a day count (since 1970-01-01) back to proleptic-Gregorian (year, month, day).
#DaysFromCivil(Int64,Int32,Int32)
Days since 1970-01-01 for any proleptic-Gregorian y/m/d (Howard Hinnant's algorithm, correct for negative years).
#DaysInMonthProleptic(Int64,Int32)
Returns the number of days in a given month for a proleptic Gregorian year.
#FloorDiv(Int64,Int64)
Floor division — rounds toward negative infinity (unlike C# integer division).
#FloorMod(Int64,Int64)
Floor modulo — result has the same sign as the divisor.
#FromProleptic(Int64,Int32,Int32,TimeOnly,Int32,TimeSpan,Boolean)
Builds an from a proleptic (year, month, day) and a time-of-day, setting ExtendedYear when the year falls outside the .NET 1..9999 range.
#IsLeapYearProleptic(Int64)
Determines if a year is a leap year in the proleptic Gregorian calendar. XSD uses proleptic Gregorian where year 0 exists (= 1 BC in astronomical year numbering).