/// <summary> /// Polymorphic factory for creating a DateTime /// </summary> /// <param name="date"></param> /// <param name="time"></param> /// <returns></returns> private static TzDbAbstractDateTime CreateDateTime(Date date, AbstractTime time) { var localTime = time as LocalTime; if (null != localTime) { return(new TzDbLocalDateTime(date, localTime)); } var standardTime = time as StandardTime; if (null != standardTime) { return(new TzDbStandardDateTime(date, standardTime)); } var utcTime = time as UtcTime; if (null != utcTime) { return(new TzDbUtcDateTime(date, utcTime)); } string msg = String.Format("Received unsupported implementation of {0}: {1}", typeof(AbstractTime).Name, time.GetType().Name); throw new Exception(msg); }
public TzDbRule(String name, AbstractYearSpecification from, AbstractYearSpecification to, String type, MonthOfYear @in, AbstractDayOfMonthSpecification on, AbstractTime at, TimeSpan save, TimeZoneAbbreviationVariable letter) : this() { Name = name; From = from; To = to; Type = type; In = @in; On = on; At = at; Save = save; Letter = letter; }
public static bool TryParse(Queue <Token> unProcessedTokens, out TzDbRule?tzDbRule) { // the value of the first token of every link entry is Rule const String ruleRegex = "Rule"; if (Regex.IsMatch(unProcessedTokens.Peek().Value, ruleRegex)) { try { // dequeue Rule token and discard unProcessedTokens.Dequeue(); string name = unProcessedTokens.Dequeue().Value; AbstractYearSpecification from = YearSpecificationExpression.Parse(unProcessedTokens); AbstractYearSpecification to = ParseToExpression(unProcessedTokens, from); string type = unProcessedTokens.Dequeue().Value; MonthOfYear @in = MonthOfYearExpression.Parse(unProcessedTokens); AbstractDayOfMonthSpecification on = DayOfMonthSpecificationExpression.Parse(unProcessedTokens); AbstractTime at = TzDbTimeExpression.Parse(unProcessedTokens); TimeSpan save = TimeSpanExpression.Parse(unProcessedTokens); TimeZoneAbbreviationVariable letter = TimeZoneAbbreviationVariableExpression.Parse(unProcessedTokens); tzDbRule = new TzDbRule(name, from, to, type, @in, on, at, save, letter); Token endLineToken = unProcessedTokens.Dequeue(); // guard end of line token was present if (endLineToken.TokenType != TokenType.EndLine) { string msg = String.Format( "received unexpected token type:{0} when token type should have been {1}", endLineToken.TokenType, TokenType.EndLine); throw new Exception(msg); } return(true); } catch (Exception e) { string msg = String.Format("Unable to parse {0}", typeof(RuleExpression).Name); throw new Exception(msg, e); } } tzDbRule = null; return(false); }
public static bool TryParse(Queue <Token> unProcessedTokens, out AbstractTime time) { string timeExpressionRegex = String.Format(@"^(({0})|({1})|({1}:{2})|({1}:{2}:{3})){4}?$", zeroRegex, hoursRegex, minutesRegex, secondsRegex, timeTypeRegex); if (Regex.IsMatch(unProcessedTokens.Peek().Value, timeExpressionRegex)) { string timeString = unProcessedTokens.Dequeue().Value; try { if (timeString.EndsWith("w")) { timeString = timeString.TrimEnd('w'); time = new LocalTime(ParseTimeString(timeString)); return(true); } if (timeString.EndsWith("s")) { timeString = timeString.TrimEnd('s'); time = new StandardTime(ParseTimeString(timeString)); return(true); } if (timeString.EndsWith("u") || timeString.EndsWith("g") || timeString.EndsWith("z")) { timeString = timeString.TrimEnd('u', 'g', 'z'); time = new UtcTime(ParseTimeString(timeString)); return(true); } // default is local time time = new LocalTime(ParseTimeString(timeString)); return(true); } catch (Exception e) { string msg = String.Format("Unable to parse {0}: {1}", typeof(TzDbTimeExpression).Name, timeString); throw new Exception(msg, e); } } time = null; return(false); }
public DaylightSavingsRule( TimeSpan adjustmentToStandardOffset, AbstractYearSpecification utcEffectiveFromSpecification, AbstractYearSpecification utcEffectiveToSpecification, MonthOfYear occursIn, AbstractDayOfMonthSpecification occursOnSpecification, AbstractTime occursAt, TimeZoneAbbreviationVariable timeZoneAbbreviationVariable, Guid?id = null ) { AdjustmentToStandardOffset = adjustmentToStandardOffset; UtcEffectiveFromSpecification = utcEffectiveFromSpecification; UtcEffectiveToSpecification = utcEffectiveToSpecification; OccursIn = occursIn; OccursOnSpecification = occursOnSpecification; OccursAt = occursAt; TimeZoneAbbreviationVariable = timeZoneAbbreviationVariable; Id = id ?? Guid.NewGuid(); }
protected TzDbAbstractDateTime(Date date, AbstractTime time) { Date = date; Time = time; }
public MeasureAttributes(bool isVisible, AbstractClef clef, AbstractKey key, AbstractTime time) : base(isVisible, clef, key, time) { }