private static List <Resolution.Entry> ResolveDateTimeRange(TimexProperty timex) { if (timex.PartOfDay != null) { var date = TimexValue.DateValue(timex); var timeRange = PartOfDayTimeRange(timex); return(new List <Resolution.Entry> { new Resolution.Entry { Timex = timex.TimexValue, Type = "datetimerange", Start = $"{date} {timeRange.Item1}", End = $"{date} {timeRange.Item2}", }, }); } else { var range = TimexHelpers.ExpandDateTimeRange(timex); return(new List <Resolution.Entry> { new Resolution.Entry { Timex = timex.TimexValue, Type = "datetimerange", Start = $"{TimexValue.DateValue(range.Start)} {TimexValue.TimeValue(range.Start)}", End = $"{TimexValue.DateValue(range.End)} {TimexValue.TimeValue(range.End)}", }, }); } }
private static List <Resolution.Entry> ResolveTimeRange(TimexProperty timex) { if (timex.PartOfDay != null) { var range = PartOfDayTimeRange(timex); return(new List <Resolution.Entry> { new Resolution.Entry { Timex = timex.TimexValue, Type = "timerange", Start = range.Item1, End = range.Item2, }, }); } else { var range = TimexHelpers.ExpandTimeRange(timex); return(new List <Resolution.Entry> { new Resolution.Entry { Timex = timex.TimexValue, Type = "timerange", Start = TimexValue.TimeValue(range.Start), End = TimexValue.TimeValue(range.End), }, }); } }
private static string NextDateValue(TimexProperty timex, DateObject date) { if (timex.Month != null && timex.DayOfMonth != null) { return(TimexValue.DateValue(new TimexProperty { Year = date.Year, Month = timex.Month, DayOfMonth = timex.DayOfMonth, })); } if (timex.DayOfWeek != null) { var day = timex.DayOfWeek == 7 ? DayOfWeek.Sunday : (DayOfWeek)timex.DayOfWeek; var result = TimexDateHelpers.DateOfNextDay(day, date); return(TimexValue.DateValue(new TimexProperty { Year = result.Year, Month = result.Month, DayOfMonth = result.Day, })); } return(string.Empty); }
private static string LastDateValue(TimexProperty timex, System.DateTime date) { if (timex.Month != null && timex.DayOfMonth != null) { return(TimexValue.DateValue(new TimexProperty { Year = date.Year - 1, Month = timex.Month, DayOfMonth = timex.DayOfMonth })); } if (timex.DayOfWeek != null) { var day = timex.DayOfWeek == 7 ? DayOfWeek.Monday : (DayOfWeek)timex.DayOfWeek; var result = TimexDateHelpers.DateOfLastDay(day, date); return(TimexValue.DateValue(new TimexProperty { Year = result.Year, Month = result.Month, DayOfMonth = result.Day })); } return(string.Empty); }
private static Tuple <string, string> MonthWeekDateRange(int year, int month, int weekOfMonth) { var monthWeekDateRange = TimexHelpers.MonthWeekDateRange(year, month, weekOfMonth); return(new Tuple <string, string>( TimexValue.DateValue(monthWeekDateRange.Item1), TimexValue.DateValue(monthWeekDateRange.Item2))); }
private static Tuple <string, string> YearWeekDateRange(int year, int weekOfYear, bool?isWeekend) { var yearWeekDateRange = TimexHelpers.YearWeekDateRange(year, weekOfYear, isWeekend); return(new Tuple <string, string>( TimexValue.DateValue(yearWeekDateRange.Item1), TimexValue.DateValue(yearWeekDateRange.Item2))); }
private static Tuple <string, string> YearDateRange(int year) { var yearDateRange = TimexHelpers.YearDateRange(year); return(new Tuple <string, string>( TimexValue.DateValue(yearDateRange.Item1), TimexValue.DateValue(yearDateRange.Item2))); }
private static Tuple <string, string> MonthDateRange(int year, int month) { return(new Tuple <string, string>( TimexValue.DateValue(new TimexProperty { Year = year, Month = month, DayOfMonth = 1 }), TimexValue.DateValue(new TimexProperty { Year = year, Month = month + 1, DayOfMonth = 1 }))); }
private static List <Resolution.Entry> ResolveDefiniteTime(TimexProperty timex, DateObject date) { return(new List <Resolution.Entry> { new Resolution.Entry { Timex = timex.TimexValue, Type = "datetime", Value = $"{TimexValue.DateValue(timex)} {TimexValue.TimeValue(timex, date)}", }, }); }
private static List <Resolution.Entry> ResolveTime(TimexProperty timex, DateObject date) { return(new List <Resolution.Entry> { new Resolution.Entry { Timex = timex.TimexValue, Type = "time", Value = TimexValue.TimeValue(timex, date), }, }); }
private static List <Resolution.Entry> ResolveDefinite(TimexProperty timex) { return(new List <Resolution.Entry> { new Resolution.Entry { Timex = timex.TimexValue, Type = "date", Value = TimexValue.DateValue(timex), }, }); }
private static List <Resolution.Entry> ResolveDuration(TimexProperty timex) { return(new List <Resolution.Entry> { new Resolution.Entry { Timex = timex.TimexValue, Type = "duration", Value = TimexValue.DurationValue(timex), }, }); }
private static List <Resolution.Entry> ResolveDateTime(TimexProperty timex, DateObject date) { var resolvedDates = ResolveDate(timex, date); foreach (var resolved in resolvedDates) { resolved.Type = "datetime"; resolved.Value = $"{resolved.Value} {TimexValue.TimeValue(timex)}"; } return(resolvedDates); }
private static Tuple <string, string> WeekDateRange(int year, int weekOfYear) { var dateInWeek = new DateObject(year, 1, 1) + TimeSpan.FromDays((weekOfYear - 1) * 7); var start = TimexDateHelpers.DateOfLastDay(DayOfWeek.Monday, dateInWeek); var end = TimexDateHelpers.DateOfLastDay(DayOfWeek.Monday, dateInWeek + TimeSpan.FromDays(7)); return(new Tuple <string, string>( TimexValue.DateValue(new TimexProperty { Year = start.Year, Month = start.Month, DayOfMonth = start.Day }), TimexValue.DateValue(new TimexProperty { Year = end.Year, Month = end.Month, DayOfMonth = end.Day }))); }
private static List <Resolution.Entry> ResolveDefiniteDateRange(TimexProperty timex, DateObject date) { var range = TimexHelpers.ExpandDateTimeRange(timex); return(new List <Resolution.Entry> { new Resolution.Entry { Timex = timex.TimexValue, Type = "daterange", Start = TimexValue.DateValue(range.Start), End = TimexValue.DateValue(range.End), }, }); }
private static string NextDateValue(TimexProperty timex, DateObject date) { if (timex.DayOfMonth != null) { var year = date.Year; var month = date.Month; if (timex.Month != null) { month = timex.Month.Value; if (date.Month > month || (date.Month == month && date.Day > timex.DayOfMonth)) { year++; } } else { if (date.Day > timex.DayOfMonth) { month++; if (month > 12) { month = month % 12; year--; } } } return(TimexValue.DateValue(new TimexProperty { Year = year, Month = month, DayOfMonth = timex.DayOfMonth, })); } if (timex.DayOfWeek != null) { var start = GenerateWeekDate(timex, date, false); return(TimexValue.DateValue(new TimexProperty { Year = start.Year, Month = start.Month, DayOfMonth = start.Day, })); } return(string.Empty); }
private static Tuple <string, string> YearWeekDateRange(int year, int weekOfYear, bool?isWeekend) { var firstMondayInWeek = FirstDateOfWeek(year, weekOfYear, System.Globalization.CultureInfo.InvariantCulture); var start = (isWeekend == null || isWeekend.Value == false) ? firstMondayInWeek : TimexDateHelpers.DateOfNextDay(DayOfWeek.Saturday, firstMondayInWeek); var end = firstMondayInWeek + TimeSpan.FromDays(7); return(new Tuple <string, string>( TimexValue.DateValue(new TimexProperty { Year = start.Year, Month = start.Month, DayOfMonth = start.Day }), TimexValue.DateValue(new TimexProperty { Year = end.Year, Month = end.Month, DayOfMonth = end.Day }))); }
private static List <Resolution.Entry> ResolveDateTimeRange(TimexProperty timex, DateObject date) { if (timex.PartOfDay != null) { var dateValues = GetDateValues(timex, date); var timeRange = PartOfDayTimeRange(timex); var result = new List <Resolution.Entry> { }; foreach (string dateValue in dateValues) { result.Add( new Resolution.Entry { Timex = timex.TimexValue, Type = "datetimerange", Start = TimexHelpers.FormatResolvedDateValue(dateValue, timeRange.Item1), End = TimexHelpers.FormatResolvedDateValue(dateValue, timeRange.Item2), }); } return(result); } else { var range = TimexHelpers.ExpandDateTimeRange(timex); var startDateValues = GetDateValues(range.Start, date); var endDateValues = GetDateValues(range.End, date); var result = new List <Resolution.Entry> { }; foreach (var dateRange in startDateValues.Zip(endDateValues, (n, w) => new { start = n, end = w })) { result.Add( new Resolution.Entry { Timex = timex.TimexValue, Type = "datetimerange", Start = TimexHelpers.FormatResolvedDateValue(dateRange.start, TimexValue.TimeValue(range.Start, date)), End = TimexHelpers.FormatResolvedDateValue(dateRange.end, TimexValue.TimeValue(range.End, date)), }); } return(result); } }
private static List <string> GetDateValues(TimexProperty timex, DateObject date) { List <string> result = new List <string> { }; if (timex.Year != null && timex.Month != null && timex.DayOfMonth != null) { result.Add(TimexValue.DateValue(timex)); } else { result.Add(LastDateValue(timex, date)); if (timex.Year == null) { result.Add(NextDateValue(timex, date)); } } return(result); }
private static Tuple <string, string> MonthWeekDateRange(int year, int month, int weekOfYear) { var dateInWeek = new DateObject(year, month, 1 + ((weekOfYear - 1) * 7)); if (dateInWeek.DayOfWeek == DayOfWeek.Sunday) { dateInWeek = dateInWeek.AddDays(1); } else if (dateInWeek.DayOfWeek > DayOfWeek.Monday) { dateInWeek = dateInWeek.AddDays(1 - (int)dateInWeek.DayOfWeek); } var start = dateInWeek; var end = dateInWeek.AddDays(7); return(new Tuple <string, string>( TimexValue.DateValue(new TimexProperty { Year = start.Year, Month = start.Month, DayOfMonth = start.Day }), TimexValue.DateValue(new TimexProperty { Year = end.Year, Month = end.Month, DayOfMonth = end.Day }))); }