Calculate Time Span Between Points

  • Thread starter Thread starter Stuart Shay
  • Start date Start date
S

Stuart Shay

Hello All:


In the code below I have a list of Points, I want to calculate the
timespan in seconds between the points,
What is the best way to do this?

Thanks
Stuart

public class TrackPoint
{
public virtual int Id { get; set; }
public virtual DateTime? Time { set; get; }
public virtual decimal? TimeSpanSeconds { get; set; }

}

List<TrackPoint> trackPoints = new List<TrackPoint>();
trackPoints.Add(new TrackPoint { Id = 1, Time =
DateTime.Parse("1/2/2010 4:00:00 PM"), });
trackPoints.Add(new TrackPoint { Id = 2, Time =
DateTime.Parse("1/2/2010 4:01:30 PM"), });
trackPoints.Add(new TrackPoint { Id = 3, Time =
DateTime.Parse("1/2/2010 4:02:30 PM"), });
trackPoints.Add(new TrackPoint { Id = 4, Time =
DateTime.Parse("1/2/2010 4:03:00 PM"), });

foreach (var trackPoint in trackPoints)
{
Console.WriteLine(trackPoint.Id + " " + trackPoint.Time + " " +
trackPoint.TimeSpanSeconds );
}
 
In the code below I have a list of Points, I want to calculate the
timespan in seconds between the points,
What is the best way to do this?
public class TrackPoint
{
public virtual int Id { get; set; }
public virtual DateTime? Time { set; get; }
public virtual decimal? TimeSpanSeconds { get; set; }

}

List<TrackPoint> trackPoints = new List<TrackPoint>();
trackPoints.Add(new TrackPoint { Id = 1, Time = DateTime.Parse("1/2/2010
4:00:00 PM"), });
trackPoints.Add(new TrackPoint { Id = 2, Time = DateTime.Parse("1/2/2010
4:01:30 PM"), });
trackPoints.Add(new TrackPoint { Id = 3, Time = DateTime.Parse("1/2/2010
4:02:30 PM"), });
trackPoints.Add(new TrackPoint { Id = 4, Time = DateTime.Parse("1/2/2010
4:03:00 PM"), });

foreach (var trackPoint in trackPoints)
{
Console.WriteLine(trackPoint.Id + " " + trackPoint.Time + " " +
trackPoint.TimeSpanSeconds );
}

Use an oldfashioned for loop starting at 1 and simply subtract
tp.Time - tp[i-1].Time.

Arne
 
Arne:

Thanks this appears to work

public List<TrackPoint> TrackPointTimeDelta(List<TrackPoint>
trackPoints)
{
for (int i = 1; i < trackPoints.Count; i++)
{
TimeSpan duration = (DateTime)trackPoints.Time -
(DateTime)trackPoints[i - 1].Time;
trackPoints.TimeSpanSeconds = duration.TotalSeconds;
}

return trackPoints;
}





Arne Vajhøj said:
In the code below I have a list of Points, I want to calculate the
timespan in seconds between the points,
What is the best way to do this?
public class TrackPoint
{
public virtual int Id { get; set; }
public virtual DateTime? Time { set; get; }
public virtual decimal? TimeSpanSeconds { get; set; }

}

List<TrackPoint> trackPoints = new List<TrackPoint>();
trackPoints.Add(new TrackPoint { Id = 1, Time = DateTime.Parse("1/2/2010
4:00:00 PM"), });
trackPoints.Add(new TrackPoint { Id = 2, Time = DateTime.Parse("1/2/2010
4:01:30 PM"), });
trackPoints.Add(new TrackPoint { Id = 3, Time = DateTime.Parse("1/2/2010
4:02:30 PM"), });
trackPoints.Add(new TrackPoint { Id = 4, Time = DateTime.Parse("1/2/2010
4:03:00 PM"), });

foreach (var trackPoint in trackPoints)
{
Console.WriteLine(trackPoint.Id + " " + trackPoint.Time + " " +
trackPoint.TimeSpanSeconds );
}

Use an oldfashioned for loop starting at 1 and simply subtract
tp.Time - tp[i-1].Time.

Arne
 
Back
Top