Group a list of random datetime into user specified time Interval. This feature very like Excel Pivot Table Group Date Time in C#

void Main()
{
    List<DateTime> ts = DateTimeData();

    //group by 15 minutes
    Dictionary<DateTime,List<DateTime>> pivotDict = ts.GroupBy(t =>
    {
        var temp = t.AddMinutes(-(t.Minute % 15));
        temp = temp.AddSeconds(-t.Second);
        temp = temp.AddMilliseconds(-t.Millisecond);
        return temp;
    }).ToDictionary(gp => gp.Key, gp => gp.ToList());
    
    pivotDict.Dump();

}

public List<DateTime> DateTimeData()
{
    var ts = new List<DateTime>();
    ts.Add(DateTime.Parse("2020/06/20 22:20:05"));
    ts.Add(DateTime.Parse("2020/06/20 22:21:06"));
    ts.Add(DateTime.Parse("2020/06/20 22:22:09"));
    ts.Add(DateTime.Parse("2020/06/20 22:24:01"));
    ts.Add(DateTime.Parse("2020/06/20 22:28:09"));
    ts.Add(DateTime.Parse("2020/06/20 22:33:01"));
    ts.Add(DateTime.Parse("2020/06/20 22:34:05"));
    ts.Add(DateTime.Parse("2020/06/20 22:38:12"));
    ts.Add(DateTime.Parse("2020/06/20 22:40:41"));
    ts.Add(DateTime.Parse("2020/06/20 22:42:12"));
    ts.Add(DateTime.Parse("2020/06/20 22:45:52"));
    ts.Add(DateTime.Parse("2020/06/20 22:46:10"));
    ts.Add(DateTime.Parse("2020/06/20 22:48:23"));
    ts.Add(DateTime.Parse("2020/06/20 22:53:45"));
    ts.Add(DateTime.Parse("2020/06/20 22:55:24"));
    ts.Add(DateTime.Parse("2020/06/20 22:56:12"));
    ts.Add(DateTime.Parse("2020/06/20 23:01:31"));
    ts.Add(DateTime.Parse("2020/06/20 23:02:31"));
    ts.Add(DateTime.Parse("2020/06/20 23:08:12"));
    ts.Add(DateTime.Parse("2020/06/20 23:09:23"));
    ts.Add(DateTime.Parse("2020/06/20 23:10:23"));
    ts.Add(DateTime.Parse("2020/06/20 23:18:42"));
    ts.Add(DateTime.Parse("2020/06/20 23:19:44"));
    ts.Add(DateTime.Parse("2020/06/20 23:22:55"));
    ts.Add(DateTime.Parse("2020/06/20 23:23:12"));
    ts.Add(DateTime.Parse("2020/06/20 23:28:10"));
    ts.Add(DateTime.Parse("2020/06/20 23:31:02"));
    ts.Add(DateTime.Parse("2020/06/20 23:33:12"));
    ts.Add(DateTime.Parse("2020/06/20 23:38:32"));
    ts.Add(DateTime.Parse("2020/06/20 23:40:11"));
    return ts;
}


The output dictionary shows how do the groups looks like