public static bool TryParse(string startTime, string endTime, DateTime epoch, out DateRange result) { result = null; switch (startTime.Trim().Length) { //Year case 4: { if (!int.TryParse(startTime, out var y1)) { return(false); } if (y1 < 1 || y1 > 9999) { return(false); } if (!int.TryParse(endTime, out var y2)) { return(false); } if (y2 < 1 || y2 > 9999) { return(false); } result = new DateRange(new DateTime(y1, 1, 1, 0, 0, 0, epoch.Kind), new DateTime(y2, 1, 1, 0, 0, 0, epoch.Kind)); return(true); } //Month case 7: { if (!DateTime.TryParse(startTime, out var v1)) { return(false); } if (!DateTime.TryParse(endTime, out var v2)) { return(false); } result = new DateRange(v1, v2, DateTimeTypeEnum.Month, epoch); return(true); } //Time case 8: { if (!DateTime.TryParse(startTime, out var v1)) { return(false); } if (!DateTime.TryParse(endTime, out var v2)) { return(false); } result = new DateRange(v1, v2, DateTimeTypeEnum.Time, epoch); return(true); } //Date case 10: { if (!DateTime.TryParse(startTime, out var v1)) { return(false); } if (!DateTime.TryParse(endTime, out var v2)) { return(false); } result = new DateRange(v1, v2, DateTimeTypeEnum.Date, epoch); return(true); } //DateTime default: { if (!DateTime.TryParse(startTime, out var v1)) { return(false); } if (!DateTime.TryParse(endTime, out var v2)) { return(false); } result = new DateRange(v1, v2, DateTimeTypeEnum.DateTime, epoch); return(true); } } }
public static bool TryParse(string[] input, out DateRange result) { result = null; return(input.Length == 2 && TryParse(input[0], input[1], DefaultEpoch, out result)); }