Creates a DateRange from two dates, ordering them if startDate is after endDate.
Creates a DateRange from explicit date parts, ordering the resulting dates if needed.