private IEnumerable <TemporalComponent> GetComponentsFromText(string text) { var components = new List <TemporalComponent>(); var dateComponents = DateComponent.GetComponentsFromText(text); components.AddRange(dateComponents); var timeComponents = TimeComponent.GetComponentsFromText(text); components.AddRange(timeComponents); var sequenceComponents = SequenceComponent.GetComponentsFromText(text); components.AddRange(sequenceComponents); var fuzzyComponents = FuzzyComponent.GetComponentsFromText(text); components.AddRange(fuzzyComponents); var durationComponents = DurationComponent.GetComponentsFromText(text); components.AddRange(durationComponents); var relativeComponents = RelativeDateTimeComponent.GetComponentsFromText(text); components.AddRange(relativeComponents); return(components); }
public RulerIntervalInternal(TimeSpan dur, int nonUniformComponentCount, DateComponent comp, bool isHiddenWhenMajor = false) { Duration = dur; Component = comp; NonUniformComponentCount = nonUniformComponentCount; IsHiddenWhenMajor = isHiddenWhenMajor; }
public RulerIntervalInternal(RulerInterval ri) { Duration = ri.Duration; Component = ri.Component; NonUniformComponentCount = ri.NonUniformComponentCount; IsHiddenWhenMajor = ri.IsHiddenWhenMajor; }
private void AssertInvalidDateComponent(string input, DateTime baseDate) { var components = DateComponent.GetComponentsFromText(input); var componentPeriod = components.Select(c => c.GetTimePeriod(baseDate)).FirstOrDefault(); Assert.IsNull(componentPeriod); }
public void GetMonthFromNameTest() { Assert.AreEqual(1, DateComponent.GetMonthFromName("january")); Assert.AreEqual(2, DateComponent.GetMonthFromName("february")); Assert.AreEqual(3, DateComponent.GetMonthFromName("march")); Assert.AreEqual(4, DateComponent.GetMonthFromName("april")); Assert.AreEqual(5, DateComponent.GetMonthFromName("may")); Assert.AreEqual(6, DateComponent.GetMonthFromName("june")); Assert.AreEqual(7, DateComponent.GetMonthFromName("july")); Assert.AreEqual(8, DateComponent.GetMonthFromName("august")); Assert.AreEqual(9, DateComponent.GetMonthFromName("september")); Assert.AreEqual(10, DateComponent.GetMonthFromName("october")); Assert.AreEqual(11, DateComponent.GetMonthFromName("november")); Assert.AreEqual(12, DateComponent.GetMonthFromName("december")); //Abbreviation Assert.AreEqual(-1, DateComponent.GetMonthFromName("j")); Assert.AreEqual(-1, DateComponent.GetMonthFromName("ju")); Assert.AreEqual(6, DateComponent.GetMonthFromName("jun")); //Case-sensitivity Assert.AreEqual(4, DateComponent.GetMonthFromName("ApRiL")); //Invalid Assert.AreEqual(-1, DateComponent.GetMonthFromName("invalid")); Assert.AreEqual(-1, DateComponent.GetMonthFromName(" march")); Assert.AreEqual(-1, DateComponent.GetMonthFromName("may ")); }
private void AssertValidDateComponent(ITimePeriod expected, string input, DateTime baseDate) { var components = DateComponent.GetComponentsFromText(input); Assert.IsTrue(components.Any()); var componentPeriod = components.FirstOrDefault().GetTimePeriod(baseDate); Assert.IsNotNull(componentPeriod); Assert.AreEqual(expected.Start, componentPeriod.Start); Assert.AreEqual(expected.End, componentPeriod.End); }
/// <summary> /// Gets a single component of this date. /// </summary> /// <param name="component"> The date component to extract. </param> /// <param name="localOrUniversal"> Indicates whether to retrieve the component in local /// or universal time. </param> /// <returns> The date component value, or <c>NaN</c> if the date is invalid. </returns> private double GetDateComponent(DateComponent component, DateTimeKind localOrUniversal) { if (this.value == InvalidDate) { return(double.NaN); } // Convert the date to local or universal time. switch (localOrUniversal) { case DateTimeKind.Local: this.value = this.Value.ToLocalTime(); break; case DateTimeKind.Utc: this.value = this.Value.ToUniversalTime(); break; default: throw new ArgumentOutOfRangeException("localOrUniversal"); } // Extract the requested component. switch (component) { case DateComponent.Year: return(this.value.Year); case DateComponent.Month: return(this.value.Month - 1); // Javascript month is 0-11. case DateComponent.Day: return(this.value.Day); case DateComponent.DayOfWeek: return((double)this.value.DayOfWeek); case DateComponent.Hour: return(this.value.Hour); case DateComponent.Minute: return(this.value.Minute); case DateComponent.Second: return(this.value.Second); case DateComponent.Millisecond: return(this.value.Millisecond); default: throw new ArgumentOutOfRangeException("component"); } }
public void GetNextDateFromWeekDayTest() { Assert.AreEqual(new DateTime(2017, 1, 8), DateComponent.GetNextDateFromWeekDay("sunday", BaseDate)); Assert.AreEqual(new DateTime(2017, 1, 2), DateComponent.GetNextDateFromWeekDay("monday", BaseDate)); Assert.AreEqual(new DateTime(2017, 1, 3), DateComponent.GetNextDateFromWeekDay("tuesday", BaseDate)); Assert.AreEqual(new DateTime(2017, 1, 4), DateComponent.GetNextDateFromWeekDay("wednesday", BaseDate)); Assert.AreEqual(new DateTime(2017, 1, 5), DateComponent.GetNextDateFromWeekDay("thursday", BaseDate)); Assert.AreEqual(new DateTime(2017, 1, 6), DateComponent.GetNextDateFromWeekDay("friday", BaseDate)); Assert.AreEqual(new DateTime(2017, 1, 7), DateComponent.GetNextDateFromWeekDay("saturday", BaseDate)); Assert.AreEqual(BaseDate, DateComponent.GetNextDateFromWeekDay("invalid", BaseDate)); }
/// <summary> /// Sets one or more components of this date. /// </summary> /// <param name="firstComponent"> The first date component to set. </param> /// <param name="localOrUniversal"> Indicates whether to set the component(s) in local /// or universal time. </param> /// <param name="componentValues"> One or more date component values. </param> /// <returns> The number of milliseconds elapsed since January 1, 1970, 00:00:00 UTC for /// the new date. </returns> private double SetDateComponents(DateComponent firstComponent, DateTimeKind localOrUniversal, params double[] componentValues) { // Convert the date to local or universal time. switch (localOrUniversal) { case DateTimeKind.Local: this.value = this.Value.ToLocalTime(); break; case DateTimeKind.Utc: this.value = this.Value.ToUniversalTime(); break; default: throw new ArgumentOutOfRangeException("localOrUniversal"); } // Get the current component values of the date. int[] allComponentValues = new int[7]; allComponentValues[0] = this.value.Year; allComponentValues[1] = this.value.Month - 1; // Javascript month is 0-11. allComponentValues[2] = this.value.Day; allComponentValues[3] = this.value.Hour; allComponentValues[4] = this.value.Minute; allComponentValues[5] = this.value.Second; allComponentValues[6] = this.value.Millisecond; // Overwrite the component values with the new ones that were passed in. for (int i = 0; i < componentValues.Length; i++) { double componentValue = componentValues[i]; if (double.IsNaN(componentValue) || double.IsInfinity(componentValue)) { this.value = InvalidDate; return(this.ValueInMilliseconds); } allComponentValues[(int)firstComponent + i] = (int)componentValue; } // Construct a new date. this.value = ToDateTime(allComponentValues[0], allComponentValues[1], allComponentValues[2], allComponentValues[3], allComponentValues[4], allComponentValues[5], allComponentValues[6], localOrUniversal); // Return the date value. return(this.ValueInMilliseconds); }
public void GetNextDateFromMonthTest() { Assert.AreEqual(new DateTime(2018, 1, 1), DateComponent.GetNextDateFromMonth("january", BaseDate)); Assert.AreEqual(new DateTime(2017, 2, 1), DateComponent.GetNextDateFromMonth("february", BaseDate)); Assert.AreEqual(new DateTime(2017, 3, 1), DateComponent.GetNextDateFromMonth("march", BaseDate)); Assert.AreEqual(new DateTime(2017, 4, 1), DateComponent.GetNextDateFromMonth("april", BaseDate)); Assert.AreEqual(new DateTime(2017, 5, 1), DateComponent.GetNextDateFromMonth("may", BaseDate)); Assert.AreEqual(new DateTime(2017, 6, 1), DateComponent.GetNextDateFromMonth("june", BaseDate)); Assert.AreEqual(new DateTime(2017, 7, 1), DateComponent.GetNextDateFromMonth("july", BaseDate)); Assert.AreEqual(new DateTime(2017, 8, 1), DateComponent.GetNextDateFromMonth("august", BaseDate)); Assert.AreEqual(new DateTime(2017, 9, 1), DateComponent.GetNextDateFromMonth("september", BaseDate)); Assert.AreEqual(new DateTime(2017, 10, 1), DateComponent.GetNextDateFromMonth("october", BaseDate)); Assert.AreEqual(new DateTime(2017, 11, 1), DateComponent.GetNextDateFromMonth("november", BaseDate)); Assert.AreEqual(new DateTime(2017, 12, 1), DateComponent.GetNextDateFromMonth("december", BaseDate)); Assert.AreEqual(BaseDate, DateComponent.GetNextDateFromMonth("invalid", BaseDate)); }
public void GetWeekDayFromNameTest() { Assert.AreEqual(1, DateComponent.GetWeekDayFromName("sunday")); Assert.AreEqual(2, DateComponent.GetWeekDayFromName("monday")); Assert.AreEqual(3, DateComponent.GetWeekDayFromName("tuesday")); Assert.AreEqual(4, DateComponent.GetWeekDayFromName("wednesday")); Assert.AreEqual(5, DateComponent.GetWeekDayFromName("thursday")); Assert.AreEqual(6, DateComponent.GetWeekDayFromName("friday")); Assert.AreEqual(7, DateComponent.GetWeekDayFromName("saturday")); //Abbreviation Assert.AreEqual(-1, DateComponent.GetWeekDayFromName("s")); Assert.AreEqual(-1, DateComponent.GetWeekDayFromName("su")); Assert.AreEqual(1, DateComponent.GetWeekDayFromName("sun")); //Case-sensitivity Assert.AreEqual(4, DateComponent.GetWeekDayFromName("WedNeSdAy")); //Invalid Assert.AreEqual(-1, DateComponent.GetWeekDayFromName("invalid")); Assert.AreEqual(-1, DateComponent.GetMonthFromName(" monday")); Assert.AreEqual(-1, DateComponent.GetMonthFromName("thursday ")); }
/// <summary> /// Gets a single component of this date. /// </summary> /// <param name="component"> The date component to extract. </param> /// <param name="localOrUniversal"> Indicates whether to retrieve the component in local /// or universal time. </param> /// <returns> The date component value, or <c>NaN</c> if the date is invalid. </returns> private double GetDateComponent(DateComponent component, DateTimeKind localOrUniversal) { if (this.value == InvalidDate) return double.NaN; // Convert the date to local or universal time. switch (localOrUniversal) { case DateTimeKind.Local: this.value = this.Value.ToLocalTime(); break; case DateTimeKind.Utc: this.value = this.Value.ToUniversalTime(); break; default: throw new ArgumentOutOfRangeException("localOrUniversal"); } // Extract the requested component. switch (component) { case DateComponent.Year: return this.value.Year; case DateComponent.Month: return this.value.Month - 1; // Javascript month is 0-11. case DateComponent.Day: return this.value.Day; case DateComponent.DayOfWeek: return (double)this.value.DayOfWeek; case DateComponent.Hour: return this.value.Hour; case DateComponent.Minute: return this.value.Minute; case DateComponent.Second: return this.value.Second; case DateComponent.Millisecond: return this.value.Millisecond; default: throw new ArgumentOutOfRangeException("component"); } }
/// <summary> /// Sets one or more components of this date. /// </summary> /// <param name="firstComponent"> The first date component to set. </param> /// <param name="localOrUniversal"> Indicates whether to set the component(s) in local /// or universal time. </param> /// <param name="componentValues"> One or more date component values. </param> /// <returns> The number of milliseconds elapsed since January 1, 1970, 00:00:00 UTC for /// the new date. </returns> private double SetDateComponents(DateComponent firstComponent, DateTimeKind localOrUniversal, params double[] componentValues) { // Convert the date to local or universal time. switch (localOrUniversal) { case DateTimeKind.Local: this.value = this.Value.ToLocalTime(); break; case DateTimeKind.Utc: this.value = this.Value.ToUniversalTime(); break; default: throw new ArgumentOutOfRangeException("localOrUniversal"); } // Get the current component values of the date. int[] allComponentValues = new int[7]; allComponentValues[0] = this.value.Year; allComponentValues[1] = this.value.Month - 1; // Javascript month is 0-11. allComponentValues[2] = this.value.Day; allComponentValues[3] = this.value.Hour; allComponentValues[4] = this.value.Minute; allComponentValues[5] = this.value.Second; allComponentValues[6] = this.value.Millisecond; // Overwrite the component values with the new ones that were passed in. for (int i = 0; i < componentValues.Length; i++) { double componentValue = componentValues[i]; if (double.IsNaN(componentValue) || double.IsInfinity(componentValue)) { this.value = InvalidDate; return this.ValueInMilliseconds; } allComponentValues[(int)firstComponent + i] = (int)componentValue; } // Construct a new date. this.value = ToDateTime(allComponentValues[0], allComponentValues[1], allComponentValues[2], allComponentValues[3], allComponentValues[4], allComponentValues[5], allComponentValues[6], localOrUniversal); // Return the date value. return this.ValueInMilliseconds; }
public TimeRulerMark(DateTime d, bool isMajor, DateComponent comp) { Time = d; IsMajor = isMajor; Component = comp; }