private static void StopTimeTest(IGTFSDataSource source) { IGTFSFeed feed = new LenientGTFSFeed(source); var stopTimes = feed.StopTimes; var tripsByRouteService = feed.Trips.GroupBy(tp => (tp.RouteID, tp.ServiceID)); var timesByTrip = stopTimes.GroupBy(stm => stm.TripID).ToDictionary(stm => stm.Key, stm => new { start = stm.Min(x => x.DepartureTime), end = stm.Max(x => x.ArrivalTime) }); DurationPattern ptn = DurationPattern.CreateWithInvariantCulture("H:mm:ss"); foreach (var group in tripsByRouteService) { var rt = feed.Routes[group.Key.RouteID]; var cal = feed.Calendars[group.Key.ServiceID].Item1; string header = $"{rt.Type} {rt.ShortName} {rt.LongName} - {DayMasks.Get(cal.Mask)}"; Duration min = Duration.MaxValue; Duration max = Duration.MinValue; foreach (var trip in group) { var times = timesByTrip[trip.ID]; min = Duration.Min(times.start.Value, min); max = Duration.Max(times.end.Value, max); } string timeStr = $"{ptn.Format(min)} - {ptn.Format(max)}"; Console.WriteLine($"{header}: {timeStr}"); } }
static void Main() { Duration duration = Duration.FromMinutes(6000); var pattern = DurationPattern.CreateWithInvariantCulture("H:mm"); string text = pattern.Format(duration); Console.WriteLine(text); // 0:31 }
public DynamicLinqTests() { var pattern = DurationPattern.CreateWithInvariantCulture("-H:mm:ss.FFFFFFFFF"); entities = new List <Entity>() { new() { Id = Guid.NewGuid(), FirstName = "Paul", BirthDate = new LocalDate(1987, 10, 12), BirthDateNullable = new LocalDate(1987, 10, 12), StayLength = pattern.Parse("9:30:00").Value, EmployedAt = DateTime.Now }, new() { Id = Guid.NewGuid(), FirstName = "Abigail", BirthDate = new LocalDate(1970, 02, 13), StayLength = pattern.Parse("12:00:00").Value }, new() { Id = Guid.NewGuid(), FirstName = "Sophia", BirthDate = new LocalDate(1983, 05, 01), StayLength = pattern.Parse("10:30:00").Value } }.AsQueryable();
static void Main() { string input = "13:12:34"; DurationPattern pattern = DurationPattern.CreateWithInvariantCulture("H:mm:ss"); // TODO: Consider error handling. The ParseResult<T> returned by // pattern.Parse helps with that. Duration duration = pattern.Parse(input).Value; TimeSpan timeSpan = duration.ToTimeSpan(); Console.WriteLine(timeSpan); }
static void Main(string[] args) { DurationPattern pattern = DurationPattern.CreateWithInvariantCulture("+hhmm"); TimeSpan timeSpan = pattern.Parse("+0100").Value.ToTimeSpan(); }