Esempio n. 1
0
 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)}",
             },
         });
     }
 }
Esempio n. 2
0
 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),
             },
         });
     }
 }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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)));
        }
Esempio n. 6
0
        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)));
        }
Esempio n. 7
0
        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)));
        }
Esempio n. 8
0
 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
     })));
 }
Esempio n. 9
0
 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)}",
         },
     });
 }
Esempio n. 10
0
 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),
         },
     });
 }
Esempio n. 11
0
 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),
         },
     });
 }
Esempio n. 12
0
 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),
         },
     });
 }
Esempio n. 13
0
        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);
        }
Esempio n. 14
0
        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
            })));
        }
Esempio n. 15
0
        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),
                },
            });
        }
Esempio n. 16
0
        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);
        }
Esempio n. 17
0
        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
            })));
        }
Esempio n. 18
0
        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);
            }
        }
Esempio n. 19
0
        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);
        }
Esempio n. 20
0
        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
            })));
        }