public static Period ToPeriod(this FhirDateTime fdt) { var result = new Period(); var dtoStart = fdt.ToDateTimeOffset(); result.StartElement = new FhirDateTime(dtoStart); var dtoEnd = dtoStart; switch (fdt.Precision()) { case FhirDateTimePrecision.Year: dtoEnd = dtoStart.AddYears(1); break; case FhirDateTimePrecision.Month: dtoEnd = dtoStart.AddMonths(1); break; case FhirDateTimePrecision.Day: dtoEnd = dtoStart.AddDays(1); break; case FhirDateTimePrecision.Minute: dtoEnd = dtoStart.AddMinutes(1); break; case FhirDateTimePrecision.Second: dtoEnd = dtoStart.AddSeconds(1); break; default: dtoEnd = dtoStart; break; } result.EndElement = new FhirDateTime(dtoEnd); return(result); }
public static DateTimeOffset UpperBound(this FhirDateTime fdt) { var dtoStart = fdt.LowerBound(); var dtoEnd = fdt.Precision() switch { FhirDateTimePrecision.Year => dtoStart.AddYears(1), FhirDateTimePrecision.Month => dtoStart.AddMonths(1), FhirDateTimePrecision.Day => dtoStart.AddDays(1), FhirDateTimePrecision.Minute => dtoStart.AddMinutes(1), FhirDateTimePrecision.Second => dtoStart.AddSeconds(1), _ => dtoStart }; return(dtoEnd); } }
public static DateTimeOffset UpperBound(this FhirDateTime fdt) { var dtoStart = fdt.LowerBound(); var dtoEnd = dtoStart; switch (fdt.Precision()) { case FhirDateTimePrecision.Year: dtoEnd = dtoStart.AddYears(1); break; case FhirDateTimePrecision.Month: dtoEnd = dtoStart.AddMonths(1); break; case FhirDateTimePrecision.Day: dtoEnd = dtoStart.AddDays(1); break; case FhirDateTimePrecision.Minute: dtoEnd = dtoStart.AddMinutes(1); break; case FhirDateTimePrecision.Second: dtoEnd = dtoStart.AddSeconds(1); break; default: dtoEnd = dtoStart; break; } return(dtoEnd); }