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);
        }
Example #2
0
        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);
        }