【问题标题】:Create new buffer every minute每分钟创建一个新缓冲区
【发布时间】:2014-12-11 23:37:20
【问题描述】:

给定一个包含时间戳的可观察序列,我如何将序列缓冲到每个包含一分钟数据的新缓冲区中?缓冲区必须在新的一分钟开始时准确关闭..

谢谢

【问题讨论】:

    标签: system.reactive


    【解决方案1】:

    假设您的值序列已经按时间戳排序,您可以使用GroupByUntil 按分钟对它们进行分组。在这个例子中,我将每个组变成List

    // Utility method from:
    // http://stackoverflow.com/a/10100259/674326
    DateTime RoundDown(DateTime dt, TimeSpan d)
    {
        return new DateTime((dt.Ticks / d.Ticks) * d.Ticks);
    }
    
    //...
    var sequence = // ...
    var interval = TimeSpan.FromMinutes(1);
    var intervalBuffers = sequence
        .Publish(items => items.GroupByUntil(
            item => RoundDown(item.TimeStamp, interval),
            grp => items.Where(item => grp.Key != RoundDown(item.TimeStamp, interval))))
        .Select(grp => grp.ToList());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多