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 ConvertDateRange(TimexProperty timex, DateObject date) { if (timex.Year != null) { var year = date.Year; if (timex.Year == year) { if (timex.WeekOfYear != null) { var thisWeek = TimexDateHelpers.WeekOfYear(date); if (thisWeek == timex.WeekOfYear) { return(timex.Weekend != null ? $"{TimexConstantsEnglish.This} {TimexConstantsEnglish.Weekend}" : $"{TimexConstantsEnglish.This} {Constants.WeekUnit}"); } if (thisWeek == timex.WeekOfYear + 1) { return(timex.Weekend != null ? $"{TimexConstantsEnglish.Last} {TimexConstantsEnglish.Weekend}" : $"{TimexConstantsEnglish.Last} {Constants.WeekUnit}"); } if (thisWeek == timex.WeekOfYear - 1) { return(timex.Weekend != null ? $"{TimexConstantsEnglish.Next} {TimexConstantsEnglish.Weekend}" : $"{TimexConstantsEnglish.Next} {Constants.WeekUnit}"); } } if (timex.Month != null) { if (timex.Month == date.Month) { return($"{TimexConstantsEnglish.This} {Constants.MonthUnit}"); } if (timex.Month == date.Month + 1) { return($"{TimexConstantsEnglish.Next} {Constants.MonthUnit}"); } if (timex.Month == date.Month - 1) { return($"{TimexConstantsEnglish.Last} {Constants.MonthUnit}"); } } return((timex.Season != null) ? $"{TimexConstantsEnglish.This} {TimexConstantsEnglish.Seasons[timex.Season]}" : $"{TimexConstantsEnglish.This} {Constants.YearUnit}"); } if (timex.Year == year + 1) { return((timex.Season != null) ? $"{TimexConstantsEnglish.Next} {TimexConstantsEnglish.Seasons[timex.Season]}" : $"{TimexConstantsEnglish.Next} {Constants.YearUnit}"); } if (timex.Year == year - 1) { return((timex.Season != null) ? $"{TimexConstantsEnglish.Last} {TimexConstantsEnglish.Seasons[timex.Season]}" : $"{TimexConstantsEnglish.Last} {Constants.YearUnit}"); } } return(string.Empty); }
private static string ConvertDateRange(TimexProperty timex, DateObject date) { if (timex.Year != null) { var year = date.Year; if (timex.Year == year) { if (timex.WeekOfYear != null) { var thisWeek = TimexDateHelpers.WeekOfYear(date); if (thisWeek == timex.WeekOfYear) { return(timex.Weekend != null ? "this weekend" : "this week"); } if (thisWeek == timex.WeekOfYear + 1) { return(timex.Weekend != null ? "last weekend" : "last week"); } if (thisWeek == timex.WeekOfYear - 1) { return(timex.Weekend != null ? "next weekend" : "next week"); } } if (timex.Month != null) { if (timex.Month == date.Month) { return("this month"); } if (timex.Month == date.Month + 1) { return("next month"); } if (timex.Month == date.Month - 1) { return("last month"); } } return((timex.Season != null) ? $"this {TimexConstantsEnglish.Seasons[timex.Season]}" : "this year"); } if (timex.Year == year + 1) { return((timex.Season != null) ? $"next {TimexConstantsEnglish.Seasons[timex.Season]}" : "next year"); } if (timex.Year == year - 1) { return((timex.Season != null) ? $"last {TimexConstantsEnglish.Seasons[timex.Season]}" : "last year"); } } 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); }
public static string NextWeek(System.DateTime date = default(System.DateTime)) { var d = (date == default(System.DateTime)) ? System.DateTime.Now : date; var start = TimexDateHelpers.DateOfNextDay(DayOfWeek.Monday, d); var t = TimexProperty.FromDate(start); t.Days = 7; return(t.TimexValue); }
public static string DateValue(TimexProperty timexProperty) { if (timexProperty.Year != null && timexProperty.Month != null && timexProperty.DayOfMonth != null) { return($"{TimexDateHelpers.FixedFormatNumber(timexProperty.Year, 4)}-{TimexDateHelpers.FixedFormatNumber(timexProperty.Month, 2)}-{TimexDateHelpers.FixedFormatNumber(timexProperty.DayOfMonth, 2)}"); } return(string.Empty); }
private static DateObject GenerateWeekDate(TimexProperty timex, DateObject date, bool isBefore) { DateObject start; if (timex.WeekOfMonth == null && timex.WeekOfYear == null) { var day = timex.DayOfWeek == 7 ? DayOfWeek.Sunday : (DayOfWeek)timex.DayOfWeek; if (isBefore) { start = TimexDateHelpers.DateOfLastDay(day, date); } else { start = TimexDateHelpers.DateOfNextDay(day, date); } } else { int dayOfWeek = timex.DayOfWeek.Value - 1; int year = timex.Year ?? date.Year; if (timex.WeekOfYear != null) { int weekOfYear = timex.WeekOfYear.Value; start = TimexHelpers.FirstDateOfWeek(year, weekOfYear, CultureInfo.InvariantCulture).AddDays(dayOfWeek); if (timex.Year == null) { if (isBefore && start > date) { start = TimexHelpers.FirstDateOfWeek(year - 1, weekOfYear, CultureInfo.InvariantCulture).AddDays(dayOfWeek); } else if (!isBefore && start < date) { start = TimexHelpers.FirstDateOfWeek(year + 1, weekOfYear, CultureInfo.InvariantCulture).AddDays(dayOfWeek); } } } else { int month = timex.Month ?? date.Month; int weekOfMonth = timex.WeekOfMonth.Value; start = TimexHelpers.GenerateMonthWeekDateStart(year, month, weekOfMonth).AddDays(dayOfWeek); if (timex.Year == null || timex.Month == null) { if (isBefore && start > date) { start = TimexHelpers.GenerateMonthWeekDateStart(timex.Month != null ? year - 1 : year, timex.Month == null ? month - 1 : month, weekOfMonth).AddDays(dayOfWeek); } else if (!isBefore && start < date) { start = TimexHelpers.GenerateMonthWeekDateStart(timex.Month != null ? year + 1 : year, timex.Month == null ? month + 1 : month, weekOfMonth).AddDays(dayOfWeek); } } } } return(start); }
private static IEnumerable <string> ResolveDateAgainstConstraint(TimexProperty timex, DateRange constraint) { if (timex.Month != null && timex.DayOfMonth != null) { var result = new List <string>(); for (var year = constraint.Start.Year; year <= constraint.End.Year; year++) { var t = timex.Clone(); t.Year = year; result.AddRange(ResolveDefiniteAgainstConstraint(t, constraint)); } return(result); } if (timex.DayOfWeek != null) { // convert between ISO day of week and .NET day of week var day = timex.DayOfWeek == 7 ? DayOfWeek.Sunday : (DayOfWeek)timex.DayOfWeek; var dates = TimexDateHelpers.DatesMatchingDay(day, constraint.Start, constraint.End); var result = new List <string>(); foreach (var d in dates) { var t = timex.Clone(); t.DayOfWeek = null; t.Year = d.Year; t.Month = d.Month; t.DayOfMonth = d.Day; result.Add(t.TimexValue); } return(result); } if (timex.Hour != null) { var result = new List <string>(); DateTime day = constraint.Start; while (day <= constraint.End) { var t = timex.Clone(); t.Year = day.Year; t.Month = day.Month; t.DayOfMonth = day.Day; result.AddRange(ResolveDefiniteAgainstConstraint(t, constraint)); day = day.AddDays(1); } return(result); } return(Enumerable.Empty <string>()); }
private static string FormatDateRange(TimexProperty timex) { if (timex.Year != null && timex.WeekOfYear != null && timex.Weekend != null) { return($"{TimexDateHelpers.FixedFormatNumber(timex.Year, 4)}-W{TimexDateHelpers.FixedFormatNumber(timex.WeekOfYear, 2)}-WE"); } if (timex.Year != null && timex.WeekOfYear != null) { return($"{TimexDateHelpers.FixedFormatNumber(timex.Year, 4)}-W{TimexDateHelpers.FixedFormatNumber(timex.WeekOfYear, 2)}"); } if (timex.Year != null && timex.Month != null && timex.WeekOfMonth != null) { return($"{TimexDateHelpers.FixedFormatNumber(timex.Year, 4)}-{TimexDateHelpers.FixedFormatNumber(timex.Month, 2)}-W{TimexDateHelpers.FixedFormatNumber(timex.WeekOfMonth, 2)}"); } if (timex.Year != null && timex.Season != null) { return($"{TimexDateHelpers.FixedFormatNumber(timex.Year, 4)}-{timex.Season}"); } if (timex.Season != null) { return($"{timex.Season}"); } if (timex.Year != null && timex.Month != null) { return($"{TimexDateHelpers.FixedFormatNumber(timex.Year, 4)}-{TimexDateHelpers.FixedFormatNumber(timex.Month, 2)}"); } if (timex.Year != null) { return($"{TimexDateHelpers.FixedFormatNumber(timex.Year, 4)}"); } if (timex.Month != null && timex.WeekOfMonth != null && timex.DayOfWeek != null) { return($"{Constants.TimexFuzzyYear}-{TimexDateHelpers.FixedFormatNumber(timex.Month, 2)}-{Constants.TimexFuzzyWeek}-{timex.WeekOfMonth}-{timex.DayOfWeek}"); } if (timex.Month != null && timex.WeekOfMonth != null) { return($"{Constants.TimexFuzzyYear}-{TimexDateHelpers.FixedFormatNumber(timex.Month, 2)}-W{timex.WeekOfMonth?.ToString("D2", CultureInfo.InvariantCulture)}"); } if (timex.Month != null) { return($"{Constants.TimexFuzzyYear}-{TimexDateHelpers.FixedFormatNumber(timex.Month, 2)}"); } return(string.Empty); }
public static string LastWeek(DateObject date = default(DateObject)) { var d = (date == default(DateObject)) ? DateObject.Now : date; var start = TimexDateHelpers.DateOfLastDay(DayOfWeek.Monday, d); start = start.AddDays(-7); var t = TimexProperty.FromDate(start); t.Days = 7; return(t.TimexValue); }
private static string FormatTime(TimexProperty timex) { if (timex.Minute == 0 && timex.Second == 0) { return($"T{TimexDateHelpers.FixedFormatNumber(timex.Hour, 2)}"); } if (timex.Second == 0) { return($"T{TimexDateHelpers.FixedFormatNumber(timex.Hour, 2)}:{TimexDateHelpers.FixedFormatNumber(timex.Minute, 2)}"); } return($"T{TimexDateHelpers.FixedFormatNumber(timex.Hour, 2)}:{TimexDateHelpers.FixedFormatNumber(timex.Minute, 2)}:{TimexDateHelpers.FixedFormatNumber(timex.Second, 2)}"); }
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 string ConvertDateTimeRange(TimexProperty timex, System.DateTime date) { if (timex.Year != null && timex.Month != null && timex.DayOfMonth != null) { var timexDate = new System.DateTime(timex.Year.Value, timex.Month.Value, timex.DayOfMonth.Value); if (timex.PartOfDay != null) { if (TimexDateHelpers.DatePartEquals(timexDate, date)) { if (timex.PartOfDay == "NI") { return("tonight"); } else { return($"this {TimexConstantsEnglish.DayParts[timex.PartOfDay]}"); } } var tomorrow = TimexDateHelpers.Tomorrow(date); if (TimexDateHelpers.DatePartEquals(timexDate, tomorrow)) { return($"tomorrow {TimexConstantsEnglish.DayParts[timex.PartOfDay]}"); } var yesterday = TimexDateHelpers.Yesterday(date); if (TimexDateHelpers.DatePartEquals(timexDate, yesterday)) { return($"yesterday {TimexConstantsEnglish.DayParts[timex.PartOfDay]}"); } if (TimexDateHelpers.IsNextWeek(timexDate, date)) { return($"next {GetDateDay(timexDate.DayOfWeek)} {TimexConstantsEnglish.DayParts[timex.PartOfDay]}"); } if (TimexDateHelpers.IsLastWeek(timexDate, date)) { return($"last {GetDateDay(timexDate.DayOfWeek)} {TimexConstantsEnglish.DayParts[timex.PartOfDay]}"); } } } return(string.Empty); }
public static Tuple <TimexProperty, TimexProperty> 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 <TimexProperty, TimexProperty>( new TimexProperty { Year = start.Year, Month = start.Month, DayOfMonth = start.Day }, new TimexProperty { Year = end.Year, Month = end.Month, DayOfMonth = end.Day })); }
private static string ConvertDateTimeRange(TimexProperty timex, DateObject date) { if (timex.Year != null && timex.Month != null && timex.DayOfMonth != null) { var timexDate = new DateObject(timex.Year.Value, timex.Month.Value, timex.DayOfMonth.Value); if (timex.PartOfDay != null) { if (TimexDateHelpers.DatePartEquals(timexDate, date)) { if (timex.PartOfDay == Constants.TimexNight) { return(TimexConstantsEnglish.Tonight); } else { return($"{TimexConstantsEnglish.This} {TimexConstantsEnglish.DayParts[timex.PartOfDay]}"); } } var tomorrow = TimexDateHelpers.Tomorrow(date); if (TimexDateHelpers.DatePartEquals(timexDate, tomorrow)) { return($"{TimexConstantsEnglish.Tomorrow} {TimexConstantsEnglish.DayParts[timex.PartOfDay]}"); } var yesterday = TimexDateHelpers.Yesterday(date); if (TimexDateHelpers.DatePartEquals(timexDate, yesterday)) { return($"{TimexConstantsEnglish.Yesterday} {TimexConstantsEnglish.DayParts[timex.PartOfDay]}"); } if (TimexDateHelpers.IsNextWeek(timexDate, date)) { return($"{TimexConstantsEnglish.Next} {GetDateDay(timexDate.DayOfWeek)} {TimexConstantsEnglish.DayParts[timex.PartOfDay]}"); } if (TimexDateHelpers.IsLastWeek(timexDate, date)) { return($"{TimexConstantsEnglish.Last} {GetDateDay(timexDate.DayOfWeek)} {TimexConstantsEnglish.DayParts[timex.PartOfDay]}"); } } } return(string.Empty); }
public static string GenerateDateTimex(int year, int month, int day, bool byWeek) { var yearString = year == Constants.InvalidValue ? Constants.TimexFuzzyYear : TimexDateHelpers.FixedFormatNumber(year, 4); var monthString = month == Constants.InvalidValue ? Constants.TimexFuzzyMonth : TimexDateHelpers.FixedFormatNumber(month, 2); string dayString; if (byWeek) { dayString = day.ToString(CultureInfo.InvariantCulture); monthString = Constants.TimexWeek + monthString; } else { dayString = day == Constants.InvalidValue ? Constants.TimexDay : TimexDateHelpers.FixedFormatNumber(day, 2); } return($"{yearString}-{monthString}-{dayString}"); }
public static string TimeValue(TimexProperty timexProperty, DateTime date) { if (timexProperty.Hour != null && timexProperty.Minute != null && timexProperty.Second != null) { if (date.Kind == DateTimeKind.Utc) { var timeString = $"{TimexDateHelpers.FixedFormatNumber(timexProperty.Hour, 2)}:{TimexDateHelpers.FixedFormatNumber(timexProperty.Minute, 2)}:{TimexDateHelpers.FixedFormatNumber(timexProperty.Second, 2)}"; var tempDateTime = DateTime.Parse(timeString); return(tempDateTime.ToUniversalTime().ToString("HH:mm:ss")); } else { return($"{TimexDateHelpers.FixedFormatNumber(timexProperty.Hour, 2)}:{TimexDateHelpers.FixedFormatNumber(timexProperty.Minute, 2)}:{TimexDateHelpers.FixedFormatNumber(timexProperty.Second, 2)}"); } } return(string.Empty); }
private static string FormatDate(TimexProperty timex) { if (timex.Year != null && timex.Month != null && timex.DayOfMonth != null) { return($"{TimexDateHelpers.FixedFormatNumber(timex.Year, 4)}-{TimexDateHelpers.FixedFormatNumber(timex.Month, 2)}-{TimexDateHelpers.FixedFormatNumber(timex.DayOfMonth, 2)}"); } if (timex.Month != null && timex.DayOfMonth != null) { return($"XXXX-{TimexDateHelpers.FixedFormatNumber(timex.Month, 2)}-{TimexDateHelpers.FixedFormatNumber(timex.DayOfMonth, 2)}"); } if (timex.DayOfWeek != null) { return($"XXXX-WXX-{timex.DayOfWeek}"); } return(string.Empty); }
private static string ConvertDate(TimexProperty timex, DateObject date) { if (timex.Year != null && timex.Month != null && timex.DayOfMonth != null) { var timexDate = new DateObject(timex.Year.Value, timex.Month.Value, timex.DayOfMonth.Value); if (TimexDateHelpers.DatePartEquals(timexDate, date)) { return(TimexConstantsEnglish.Today); } var tomorrow = TimexDateHelpers.Tomorrow(date); if (TimexDateHelpers.DatePartEquals(timexDate, tomorrow)) { return(TimexConstantsEnglish.Tomorrow); } var yesterday = TimexDateHelpers.Yesterday(date); if (TimexDateHelpers.DatePartEquals(timexDate, yesterday)) { return(TimexConstantsEnglish.Yesterday); } if (TimexDateHelpers.IsThisWeek(timexDate, date)) { return($"{TimexConstantsEnglish.This} {GetDateDay(timexDate.DayOfWeek)}"); } if (TimexDateHelpers.IsNextWeek(timexDate, date)) { return($"{TimexConstantsEnglish.Next} {GetDateDay(timexDate.DayOfWeek)}"); } if (TimexDateHelpers.IsLastWeek(timexDate, date)) { return($"{TimexConstantsEnglish.Last} {GetDateDay(timexDate.DayOfWeek)}"); } } return(TimexConvertEnglish.ConvertDate(timex)); }
private static string ConvertDate(TimexProperty timex, System.DateTime date) { if (timex.Year != null && timex.Month != null && timex.DayOfMonth != null) { var timexDate = new System.DateTime(timex.Year.Value, timex.Month.Value, timex.DayOfMonth.Value); if (TimexDateHelpers.DatePartEquals(timexDate, date)) { return("today"); } var tomorrow = TimexDateHelpers.Tomorrow(date); if (TimexDateHelpers.DatePartEquals(timexDate, tomorrow)) { return("tomorrow"); } var yesterday = TimexDateHelpers.Yesterday(date); if (TimexDateHelpers.DatePartEquals(timexDate, yesterday)) { return("yesterday"); } if (TimexDateHelpers.IsThisWeek(timexDate, date)) { return($"this {GetDateDay(timexDate.DayOfWeek)}"); } if (TimexDateHelpers.IsNextWeek(timexDate, date)) { return($"next {GetDateDay(timexDate.DayOfWeek)}"); } if (TimexDateHelpers.IsLastWeek(timexDate, date)) { return($"last {GetDateDay(timexDate.DayOfWeek)}"); } } return(TimexConvertEnglish.ConvertDate(timex)); }