Beispiel #1
0
        // April 20 - 25, 2020
        private static Tuple <DateTime, DateTime> ParseBlissCruisesDates(string dateTime)
        {
            if (string.IsNullOrWhiteSpace(dateTime))
            {
                return(null);
            }

            string currentYear = DateTime.Now.Year.ToString();
            string nextYear    = DateTime.Now.AddYears(1).Year.ToString();
            string twoYears    = DateTime.Now.AddYears(2).Year.ToString();

            DateTime startDate = DateTime.MinValue;
            DateTime endDate   = DateTime.MinValue;

            string date = CleanDateString(dateTime).Trim();

            date = ReplaceAbbreviatedMonths(date);

            string month    = DateEx.GetMonth(date);
            string startDay = "";
            string endDay   = "";
            string year     = currentYear;

            if (dateTime.Contains(nextYear))
            {
                year = nextYear;
            }


            if (dateTime.Contains(twoYears))
            {
                year = twoYears;
            }


            string[] dateSplit = date.Split(' ');
            for (int i = 0; i < dateSplit.Length; i++)
            {
                if (dateSplit[i] == "-")
                {
                    startDay = dateSplit[i - 1];
                    endDay   = dateSplit[i + 1].ToSafeString(true);
                }
            }

            DateTime.TryParse($"{month} {startDay}, {year}", out startDate);
            DateTime.TryParse($"{month} {endDay}, {year}", out endDate);

            return(new Tuple <DateTime, DateTime>(startDate, endDate));
        }
Beispiel #2
0
        private static Tuple <DateTime, DateTime> ParseModernLifestyleDates(string dateTime)
        {
            string currentYear = DateTime.Now.Year.ToString();
            string nextYear    = DateTime.Now.AddYears(1).Year.ToString(); // for dates that start on new years eve etc and end on end next day or after

            DateTime startDate = DateTime.MinValue;                        // so if defaulted to this it won't show up in list
            DateTime endDate   = DateTime.MinValue;                        //startDate.AddDays(100);

            string date = CleanDateString(dateTime);

            date = ReplaceAbbreviatedMonths(date);

            int monthCount = GetMonthCount(date);

            if (monthCount > 1)
            {
                return(ParseSplitDates(date));
            }

            string month = DateEx.GetMonth(date);
            string day   = "";
            string year  = "";

            // //Fri-Tue, Jan 24-31

            #region Try an determine the end token for the date line. It should be year, am or pm.
            string endToken = "";

            if (date.EndsWith(currentYear))
            {
                endToken = currentYear;
                year     = currentYear;
            }
            else if (date.EndsWith(nextYear))
            {
                endToken = nextYear;
                year     = nextYear;
            }
            else if (date.EndsWith("am"))
            {
                endToken = "am";
            }
            else if (date.EndsWith("pm"))
            {
                endToken = "pm";
            }
            else
            {
                return(new Tuple <DateTime, DateTime>(startDate, endDate));
            }

            #endregion // get end token

            // Get year
            if (string.IsNullOrWhiteSpace(year))
            {
                if (date.Contains(nextYear))
                {
                    year = nextYear;
                }
                else
                {
                    year = currentYear;
                }
            }

            // Get Day
            int      dayNum    = -1;
            string[] dateSplit = date.Split(' ');
            day = dateSplit[1];// should be
            if (int.TryParse(day, out dayNum) == false)
            {
                day = dateSplit[2];
            }

            // if day is 02 try parse int to get it to number
            if (day.StartsWith("0"))
            {
                int test = 0;
                if (int.TryParse(day, out test))
                {
                    day = test.ToString();
                }
            }

            if (endToken == "pm")
            { //we'll have to get
                int startIndex = date.IndexOf(month);
                date = date.Substring(startIndex);
            }
            else
            {
                date = date.Substring(month, endToken, true);
            }

            string input = "";
            try
            {
                if (DateTime.TryParse(date, out startDate) == false)
                {  // it might be missing the year
                    if (DateTime.TryParse($"{month} {day}, {year}", out startDate) == false)
                    {
                        return(new Tuple <DateTime, DateTime>(startDate, endDate));
                    }
                }

                if (endToken == "am")
                {
                    endDate = startDate.AddDays(1);
                }
                else// if(endToken == "pm")
                {
                    endDate = startDate;
                }
                //if it's just a start date we'll make it the end date also because the query loks at the end date when populating the list
            }
            catch
            {
                Debug.Assert(false, "failed to parse date.");
            }
            return(new Tuple <DateTime, DateTime>(startDate, endDate));
        }
Beispiel #3
0
        private static Tuple <DateTime, DateTime> ParseModernLifestyleWebDates(string dateTime)
        {
            if (string.IsNullOrWhiteSpace(dateTime))
            {
                return(null);
            }

            string currentYear = DateTime.Now.Year.ToString();
            string nextYear    = DateTime.Now.AddYears(1).Year.ToString();
            string twoYears    = DateTime.Now.AddYears(2).Year.ToString();

            DateTime startDate = DateTime.MinValue;
            DateTime endDate   = DateTime.MinValue;

            string date = CleanDateString(dateTime).Trim();

            date = ReplaceAbbreviatedMonths(date);

            string startMonth = DateEx.GetMonth(date);
            string endMonth   = DateEx.GetMonth(date);
            string startDay   = "";
            string endDay     = "";
            string year       = currentYear;

            if (dateTime.Contains(nextYear))
            {
                year = nextYear;
            }


            if (dateTime.Contains(twoYears))
            {
                year = twoYears;
            }

            bool found = false;

            string[] dateSplit = date.Split(' ');
            for (int i = 0; i < dateSplit.Length; i++)
            {
                if (dateSplit[i] == "-")
                {
                    startDay = dateSplit[i - 1];
                    endDay   = dateSplit[i + 1].ToSafeString(true);
                    int tmp = -1;
                    if (!int.TryParse(startDay.Trim(), out tmp))
                    {
                        continue;
                    }

                    if (!int.TryParse(endDay.Trim(), out tmp))
                    {
                        endMonth = DateEx.GetMonth(endDay);
                        endDay   = dateSplit[i + 2].ToSafeString(true); //skip ahead two
                    }

                    if (!int.TryParse(endDay.Trim(), out tmp))
                    {
                        Debug.Assert(false, "shouldn't get here");
                        continue;
                    }
                    found = true;
                }
            }

            if (!found)
            {
                //  Fri, Mar 13
                for (int i = 0; i < dateSplit.Length; i++)
                {
                    int day = -1;
                    if (int.TryParse(dateSplit[i].Trim(), out day))
                    {
                        startDay = day.ToString();
                        endDay   = startDay;
                        break;
                    }
                }
            }

            if (string.IsNullOrWhiteSpace(endDay))
            {
                endDay = startDay;
            }

            DateTime.TryParse($"{startMonth} {startDay}, {year}", out startDate);
            DateTime.TryParse($"{endMonth} {endDay}, {year}", out endDate);

            if (endDate == DateTime.MinValue)
            {
                endDate = startDate;
            }

            return(new Tuple <DateTime, DateTime>(startDate, endDate));
        }