public static string ToDisplayDate(DateTime dateTime, TimeZoneInfo userTimezone) { // today/tomorrow/on date var userToday = TimeConverter.ConvertUtcToUserTime(DateTime.UtcNow, userTimezone); var userDateTime = dateTime; if (userToday.Date.Equals(userDateTime.Date)) { return(CalendarCommonStrings.TodayLower); } else if (userToday.AddDays(1).Date.Equals(userDateTime.Date)) { return(CalendarCommonStrings.TomorrowLower); } else { return(string.Format(CalendarCommonStrings.ShowEventDateCondition, userDateTime.ToShortDateString())); } }
public static List <DateTimeResolution> RecognizeDateTime(string dateTimeString, string culture, TimeZoneInfo userTimeZone, bool convertToDate = true) { var userNow = TimeConverter.ConvertUtcToUserTime(DateTime.UtcNow, userTimeZone); var results = DateTimeRecognizer.RecognizeDateTime(DateTimeHelper.ConvertNumberToDateTimeString(dateTimeString, convertToDate), culture, DateTimeOptions.CalendarMode, userNow); if (results.Count > 0) { // Return list of resolutions from first match var result = new List <DateTimeResolution>(); var values = (List <Dictionary <string, string> >)results[0].Resolution["values"]; foreach (var value in values) { result.Add(ReadResolution(value)); } return(result); } return(null); }
public static async Task <List <EventModel> > GetEventsByTimeAsync(List <DateTime> startDateList, List <DateTime> startTimeList, List <DateTime> endDateList, List <DateTime> endTimeList, TimeZoneInfo userTimeZone, ICalendarService calendarService) { // todo: check input datetime is utc var rawEvents = new List <EventModel>(); var resultEvents = new List <EventModel>(); if (!startDateList.Any() && !startTimeList.Any() && !endDateList.Any() && !endTimeList.Any()) { return(resultEvents); } DateTime?startDate = null; if (startDateList.Any()) { startDate = startDateList.Last(); } DateTime?endDate = null; if (endDateList.Any()) { endDate = endDateList.Last(); } var searchByStartTime = startTimeList.Any() && endDate == null && !endTimeList.Any(); startDate = startDate ?? TimeConverter.ConvertUtcToUserTime(DateTime.UtcNow, userTimeZone); endDate = endDate ?? startDate ?? TimeConverter.ConvertUtcToUserTime(DateTime.UtcNow, userTimeZone); var searchStartTimeList = new List <DateTime>(); var searchEndTimeList = new List <DateTime>(); if (startTimeList.Any()) { foreach (var time in startTimeList) { searchStartTimeList.Add(TimeZoneInfo.ConvertTimeToUtc( new DateTime(startDate.Value.Year, startDate.Value.Month, startDate.Value.Day, time.Hour, time.Minute, time.Second), userTimeZone)); } } else { searchStartTimeList.Add(TimeZoneInfo.ConvertTimeToUtc( new DateTime(startDate.Value.Year, startDate.Value.Month, startDate.Value.Day), userTimeZone)); } if (endTimeList.Any()) { foreach (var time in endTimeList) { searchEndTimeList.Add(TimeZoneInfo.ConvertTimeToUtc( new DateTime(endDate.Value.Year, endDate.Value.Month, endDate.Value.Day, time.Hour, time.Minute, time.Second), userTimeZone)); } } else { searchEndTimeList.Add(TimeZoneInfo.ConvertTimeToUtc( new DateTime(endDate.Value.Year, endDate.Value.Month, endDate.Value.Day, 23, 59, 59), userTimeZone)); } DateTime?searchStartTime = null; if (searchByStartTime) { foreach (var startTime in searchStartTimeList) { rawEvents = await calendarService.GetEventsByStartTimeAsync(startTime); if (rawEvents.Any()) { searchStartTime = startTime; break; } } } else { for (var i = 0; i < searchStartTimeList.Count(); i++) { rawEvents = await calendarService.GetEventsByTimeAsync( searchStartTimeList[i], searchEndTimeList.Count() > i?searchEndTimeList[i] : searchEndTimeList[0]); if (rawEvents.Any()) { searchStartTime = searchStartTimeList[i]; break; } } } foreach (var item in rawEvents) { if (item.StartTime >= searchStartTime && item.IsCancelled != true) { resultEvents.Add(item); } } return(resultEvents); }