当前位置: 首页 > news >正文

获取分时计算的小时数据

查询某个时间段,在一群时间区间的小时数据,(2024-03-01 00:00:00 ,2024-05-31 01:00:00)

表示每天的0点到1点

            var startDate = "20240831200000";var endDate = "20240901195959";List<TimingConfig> timingConfigs = new List<TimingConfig>();TimingConfig timingConfig = new TimingConfig();timingConfig.StartTime =DateTime.ParseExact("2024-03-01 00:00:00", "yyyy-MM-dd HH:mm:ss", null);timingConfig.EndTime =  DateTime.ParseExact("2024-05-31 01:00:00", "yyyy-MM-dd HH:mm:ss", null);timingConfigs.Add(timingConfig);timingConfig = new TimingConfig();timingConfig.StartTime = DateTime.ParseExact("2024-03-01 06:00:00", "yyyy-MM-dd HH:mm:ss", null);timingConfig.EndTime = DateTime.ParseExact("2024-03-01 12:00:00", "yyyy-MM-dd HH:mm:ss", null);timingConfigs.Add(timingConfig);timingConfig = new TimingConfig();timingConfig.StartTime = DateTime.ParseExact("2024-03-01 15:00:00", "yyyy-MM-dd HH:mm:ss", null);timingConfig.EndTime = DateTime.ParseExact("2024-03-01 16:00:00", "yyyy-MM-dd HH:mm:ss", null);timingConfigs.Add(timingConfig);timingConfig = new TimingConfig();timingConfig.StartTime = DateTime.ParseExact("2024-06-01 08:00:00", "yyyy-MM-dd HH:mm:ss", null);timingConfig.EndTime = DateTime.ParseExact("2024-08-31 15:00:00", "yyyy-MM-dd HH:mm:ss", null);timingConfigs.Add(timingConfig);timingConfig = new TimingConfig();timingConfig.StartTime = DateTime.ParseExact("2024-06-01 23:00:00", "yyyy-MM-dd HH:mm:ss", null);timingConfig.EndTime = DateTime.ParseExact("2024-09-01 00:00:00", "yyyy-MM-dd HH:mm:ss", null);timingConfigs.Add(timingConfig);var configs = timingConfigs.ExtractHourlyData(startDate.AsDateTime(), endDate.AsDateTime());
 /// <summary>/// 获取分时计算的小时数据/// </summary>/// <param name="configList"></param>/// <param name="startTime"></param>/// <param name="endTime"></param>/// <returns></returns>internal static List<TimingConfig> GetRangeHourlyData(this List<TimingConfig> configList,DateTime startTime, DateTime endTime){List<TimingConfig> timingConfigs = new List<TimingConfig>();foreach (var timingConfig in configList){DateTime currentDateTime = startTime;DateTime rangeStartDate = timingConfig.StartTime;int startHour = rangeStartDate.Hour;DateTime rangeEndDate = timingConfig.EndTime;int endHour = rangeEndDate.Hour;if (endHour == 0){rangeEndDate = rangeEndDate.AddSeconds(-1);endHour = 24;}while (currentDateTime <= endTime){if (currentDateTime >= rangeStartDate && currentDateTime < rangeEndDate&& currentDateTime.Hour >= startHour && currentDateTime.Hour < endHour){TimingConfig config = new TimingConfig();config.MediaId = timingConfig.MediaId;config.StartTime = currentDateTime;config.EndTime = currentDateTime;timingConfigs.Add(config);}currentDateTime = currentDateTime.AddHours(1);}}return timingConfigs;}
  1. 该方法接受三个参数,分别是configList(TimingConfig对象列表)、startTime(起始时间)、endTime(结束时间)。
  2. 实现逻辑:
    • 遍历传入的configList中的每一个TimingConfig对象。
    • 对于每个TimingConfig对象,获取其StartTime和EndTime对应的小时数(startHour和endHour)。
    • 循环遍历从startTime到endTime的每个小时,判断当前时间是否在某个TimingConfig对象的时间范围内,并且当前小时是否在指定的范围内。
    • 如果满足条件,则创建一个新的TimingConfig对象,设置MediaId、StartTime和EndTime,并添加到结果列表timingConfigs中。

相关文章:

  • ocp考试是中文还是英文?ocp认证好考吗
  • Css提高——Css3的新增选择器
  • 使用uniapp,uni-data-select组件时,内容长度没超过容器宽度时候虽然能显示全内容但是数据后边会出现三个点,逼死强迫症
  • 24计算机考研调剂 | 集美大学(11408)
  • 在基于全志V851se的TinyVision上手动构建 Linux 6.1 + Debian 12 镜像
  • phpStudy安装thinkCMF8时,如何解决服务器rewrite和APIrewrite不支持的问题
  • 【Python 48小时速成 1】单下划线与双下划线的作用
  • 读算法的陷阱:超级平台、算法垄断与场景欺骗笔记14_友和敌
  • EDI在汽车主机厂配送流程中的应用
  • 深度学习_ResNet_5
  • 绝地求生:受到封禁三天的玩家,静待解封即可!官方暂未发布系误封公告
  • flask 继续学习
  • 完美解决 git报错fatal: unable to access ‘https://github.com/.../.git‘:Recv failure Connection was reset
  • 卷积篇 | YOLOv8改进之C2f模块融合SCConv | 即插即用的空间和通道维度重构卷积
  • 常用的gpt网站
  • 2017-09-12 前端日报
  • fetch 从初识到应用
  • Github访问慢解决办法
  • Js基础——数据类型之Null和Undefined
  • js继承的实现方法
  • k8s如何管理Pod
  • leetcode98. Validate Binary Search Tree
  • mysql 数据库四种事务隔离级别
  • PV统计优化设计
  • ReactNative开发常用的三方模块
  • 阿里云应用高可用服务公测发布
  • 聚簇索引和非聚簇索引
  • 开源地图数据可视化库——mapnik
  • 手机端车牌号码键盘的vue组件
  • 数组大概知多少
  • 数组的操作
  • 算法-插入排序
  • 微信公众号开发小记——5.python微信红包
  • 新手搭建网站的主要流程
  • Hibernate主键生成策略及选择
  • kubernetes资源对象--ingress
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 如何正确理解,内页权重高于首页?
  • #100天计划# 2013年9月29日
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (30)数组元素和与数字和的绝对差
  • (4)(4.6) Triducer
  • (Forward) Music Player: From UI Proposal to Code
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (层次遍历)104. 二叉树的最大深度
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (转)ABI是什么
  • (转)h264中avc和flv数据的解析
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET Core WebAPI中封装Swagger配置