public void Setup() { _container = CifParserIocContainerBuilder.Build(); _enumPropertyParsers = _container.Resolve<IRecordEnumPropertyParser[]>(); _dateTimeParser = _container.Resolve<IDateTimeParser>(); }
public static void MyClassInitialize(TestContext testContext) { _parser = DateTimeConverterFactory.CreateParser(); }
public ConvertFromXElement(IDateTimeParser dateTimeParser) { this.dateTimeParser = dateTimeParser; }
public DateTimeModel(IDateTimeParser parser, IDateTimeExtractor extractor) { this.Parser = parser; this.Extractor = extractor; }
public TestTimePeriodParser() { referenceTime = new DateObject(2016, 11, 7, 16, 12, 0); extractor = new BaseTimePeriodExtractor(new SpanishTimePeriodExtractorConfiguration()); parser = new BaseTimePeriodParser(new SpanishTimePeriodParserConfiguration(new SpanishCommonDateTimeParserConfiguration())); }
/// <summary> /// Converts a date from one format to another. If a valid time modifier is specified then the date is adjusted /// accordingly before being returned. /// </summary> public bool TryFormat(IDateTimeOperationTO dateTimeTO, out string result, out string error) { result = ""; IDateTimeParser dateTimeParser = DateTimeConverterFactory.CreateParser(); bool nothingDied = true; IDateTimeResultTO dateTimeResultTO; //2013.05.06: Ashley Lewis - Bug 9300 - trim should allow null input format dateTimeTO.InputFormat = dateTimeTO.InputFormat != null?dateTimeTO.InputFormat.Trim() : null; //2013.02.12: Ashley Lewis - Bug 8725, Task 8840 - Added trim to data if (dateTimeParser.TryParseDateTime(dateTimeTO.DateTime.Trim(), dateTimeTO.InputFormat, out dateTimeResultTO, out error)) { // // Parse time, if present // DateTime tmpDateTime = dateTimeResultTO.ToDateTime(); if (!string.IsNullOrWhiteSpace(dateTimeTO.TimeModifierType)) { //2012.09.27: massimo.guerrera - Added for the new functionality for the time modification Func <DateTime, int, DateTime> funcToExecute; if (_timeModifiers.TryGetValue(dateTimeTO.TimeModifierType, out funcToExecute) && funcToExecute != null) { tmpDateTime = funcToExecute(tmpDateTime, dateTimeTO.TimeModifierAmount); } } // // If nothing has gone wrong yet // // ReSharper disable ConditionIsAlwaysTrueOrFalse if (nothingDied) // ReSharper restore ConditionIsAlwaysTrueOrFalse { // // If there is no output format use the input format // string outputFormat = (string.IsNullOrWhiteSpace(dateTimeTO.OutputFormat)) ? dateTimeTO.InputFormat : dateTimeTO.OutputFormat; if (string.IsNullOrWhiteSpace(outputFormat)) { //07.03.2013: Ashley Lewis - Bug 9167 null to default outputFormat = dateTimeParser.TranslateDotNetToDev2Format(GlobalConstants.Dev2DotNetDefaultDateTimeFormat, out error); } // // Format to output format // List <IDateTimeFormatPartTO> formatParts; // // Get output format parts // nothingDied = DateTimeParser.TryGetDateTimeFormatParts(outputFormat, out formatParts, out error); if (nothingDied) { int count = 0; while (count < formatParts.Count && nothingDied) { IDateTimeFormatPartTO formatPart = formatParts[count]; if (formatPart.Isliteral) { result += formatPart.Value; } else { Func <IDateTimeResultTO, DateTime, string> func; if (_dateTimeFormatParts.TryGetValue(formatPart.Value, out func)) { result += func(dateTimeResultTO, tmpDateTime); } else { nothingDied = false; error = string.Concat("Unrecognized format part '", formatPart.Value, "'."); } } count++; } } } } else { nothingDied = false; } return(nothingDied); }
public TestDateParser() { refrenceDay = new DateObject(2016, 11, 7); parser = new BaseDateParser(new SpanishDateParserConfiguration(new SpanishCommonDateTimeParserConfiguration())); extractor = new BaseDateExtractor(new SpanishDateExtractorConfiguration()); }
public static void MyClassInitialize(TestContext testContext) { _parser = DateTimeConverterFactory.CreateStandardParser(); }
public static DateTimeResolutionResult Handle(IDateTimeParser timeParser, DateTimeExtra <PeriodType> extra, DateObject refTime) { //Left is a time var left = extra.NamedEntity["left"]; TimeResult leftResult, rightResult = null; // 下午四点十分到五点十分 if (extra.Type == PeriodType.FullTime) { var leftExtract = new ExtractResult { Start = left.Index, Length = left.Length, Text = left.Value, Type = Constants.SYS_DATETIME_TIME }; leftResult = timeParser.Parse(leftExtract, refTime).Data as TimeResult; } else { // 下午四到五点 leftResult = TimeFunctions.GetShortLeft(left.Value); } //Right is a time var right = extra.NamedEntity["right"]; var rightExtract = new ExtractResult { Start = right.Index, Length = right.Length, Text = right.Value, Type = Constants.SYS_DATETIME_TIME }; rightResult = timeParser.Parse(rightExtract, refTime).Data as TimeResult; var ret = new DateTimeResolutionResult() { Success = true }; //the right side doesn't contain desc while the left side does if (rightResult.LowBound == -1 && leftResult.LowBound != -1 && rightResult.Hour <= leftResult.LowBound) { rightResult.Hour += 12; } int day = refTime.Day, month = refTime.Month, year = refTime.Year; //determine if the right side time is smaller than the left side, if yes, add one day int hour = leftResult.Hour > 0 ? leftResult.Hour : 0, min = leftResult.Minute > 0 ? leftResult.Minute : 0, second = leftResult.Second > 0 ? leftResult.Second : 0; var leftTime = DateObject.MinValue.SafeCreateFromValue(year, month, day, hour, min, second); hour = rightResult.Hour > 0 ? rightResult.Hour : 0; min = rightResult.Minute > 0 ? rightResult.Minute : 0; second = rightResult.Second > 0 ? rightResult.Second : 0; var rightTime = DateObject.MinValue.SafeCreateFromValue(year, month, day, hour, min, second); if (rightTime.Hour < leftTime.Hour) { rightTime = rightTime.AddDays(1); } ret.FutureValue = ret.PastValue = new Tuple <DateObject, DateObject>(leftTime, rightTime); var leftTimex = BuildTimex(leftResult); var rightTimex = BuildTimex(rightResult); ret.Timex = $"({leftTimex},{rightTimex},{BuildSpan(leftResult, rightResult)})"; return(ret); }
public TestDateTimeParser() { referenceTime = new DateObject(2016, 11, 7, 0, 0, 0); extractor = new BaseDateTimeExtractor(new EnglishDateTimeExtractorConfiguration()); parser = new BaseDateTimeParser(new EnglishDateTimeParserConfiguration(new EnglishCommonDateTimeParserConfiguration())); }
public static DTParseResult Handle(IDateTimeParser timeParser, DateTimeExtra <PeriodType> extra, DateObject refTime) { //Left is a time var left = extra.NamedEntity["left"]; TimeResult leftResult, rightResult = null; // 下午四点十分到五点十分 if (extra.Type == PeriodType.FullTime) { var leftExtract = new ExtractResult { Start = left.Index, Length = left.Length, Text = left.Value, Type = Constants.SYS_DATETIME_TIME }; leftResult = timeParser.Parse(leftExtract, refTime).Data as TimeResult; } // 下午四到五点 else { leftResult = TimeFunctions.GetShortLeft(left.Value); } //Right is a time var right = extra.NamedEntity["right"]; var rightExtract = new ExtractResult { Start = right.Index, Length = right.Length, Text = right.Value, Type = Constants.SYS_DATETIME_TIME }; rightResult = timeParser.Parse(rightExtract, refTime).Data as TimeResult; var ret = new DTParseResult() { Success = true }; //右侧没有Desc,左侧有 if (rightResult.LowBound == -1 && leftResult.LowBound != -1 && rightResult.Hour <= leftResult.LowBound) { rightResult.Hour += 12; } int day = refTime.Day, month = refTime.Month, year = refTime.Year; //判断右侧是否比小测的小,如果比左侧的小,则增加一天 int hour = leftResult.Hour > 0 ? leftResult.Hour : 0, min = leftResult.Minute > 0 ? leftResult.Minute : 0, second = leftResult.Second > 0 ? leftResult.Second : 0; var leftTime = new DateObject(year, month, day, hour, min, second); hour = rightResult.Hour > 0 ? rightResult.Hour : 0; min = rightResult.Minute > 0 ? rightResult.Minute : 0; second = rightResult.Second > 0 ? rightResult.Second : 0; var rightTime = new DateObject(year, month, day, hour, min, second); if (rightTime.Hour < leftTime.Hour) { rightTime = rightTime.AddDays(1); } ret.FutureValue = ret.PastValue = new Tuple <DateObject, DateObject>(leftTime, rightTime); var leftTimex = BuildTimex(leftResult); var rightTimex = BuildTimex(rightResult); ret.Timex = $"({leftTimex},{rightTimex},{BuildSpan(leftResult, rightResult)})"; return(ret); }