Python一些可能用的到的函数系列123 ATimer2-时间偏移
说明
之前确定了时间轴(千年历),以及时间的转换方法。其中时间轴的数据将会存储在集群,以及通过RedisOrMongo保存部分常用的数据。
本次讨论时间偏移的度量问题。
内容
1 两种形式
我们提到时间时,通常会有两种方式:
- 1 按照名义日历,例如月末、年末。
- 2 按照绝对间隔,例如10分钟后,2天后。
第一种应用通常出现在报表需求上,例如,在每个月1号,统计上个月(周期描述)的所有交易额。这个时候,名义的描述是准确的,但是每个月有大小月,还有平闰月。这种需求,通过名义时间轴就可以较容易的处理。之类应用的间隔,可以以"c"开头,意味着字符推断,或者日历推算。
第二种应用通常出现在程序执行上,例如,每分钟执行一次程序;或5分钟后执行某个程序。
就时间的描述来说,又存在两种方式:
- 1 某个时间点。
- 2 某个时间段。
所以以下分为四种情况加以讨论:
- 1 字符·时间点
- 2 字符·时间段
- 3 数值·时间点
- 4 数值·时间段
2 字符·时间点
具体的语言描述可能会有更多可能,以下仅描述几种常用的,需要的以后再加就可以了。
2.1 end_of_last_month
采用当月时间再前推一天
严格来说是end day of last month。
假设已经有了yymon_dict
,这是由每个月首日与对应时间戳构成的有序字典。
将键拿出来,构成列表
time_axis = np.array(list(yymon_dict.values()))
dt_axis = list(yymon_dict.keys())
其中dt_axis
是字符型的日期列表,time_axis
是对应的时间戳。
给定任意一个时间,推算上个月的时间点
# 任意字符串时间
some_dt_str = '2024-01-31 11:11:11'
# 从字符串时间中提取月初、日时分秒
yymon, dhms =depart_mon_ddhhmmss(some_dt_str)
# 推算月初的上一日
month_ts = yymon_dict[yymon] - 86400
# 以下是ATimer2-时间转换部分的过程,之后会封装
# 将时间戳转为字符
# 获取目标时间戳的最近一个月位置
pos= max(np.where(time_axis <= month_ts)[0])
# 获取月份的基础字符串
base_dt = dt_axis[pos]
# 获取月份的基础时间戳
base_ts = time_axis[pos]
# 计算当前时间戳和月基础时间戳的差距
gap_ts = month_ts - base_ts
# 计算月内的偏移时间字符串,然后拼接
char_ts = base_dt[:7] + gapts2day(gap_ts)
'2023-12-31 00:00:00'
整个过程还是以查表和简单四则运算进行推算进行的,速度应该会比较快。
时间的转换还是一个更底层的功能,之后开始组装对象时,这个转换过程会比较快。
2.2 approximate_day_of_last_month
略
2.3 end_of_next_month
往下推两个月,然后再回退一天
some_dt_str = '2024-01-31 11:11:11'
yymon, dhms =depart_mon_ddhhmmss(some_dt_str)# 下下个月:通过时间轴的位置索引推算
nn_month_pos = dt_axis.index(yymon) + 2
nn_month = dt_axis[nn_month_pos]month_ts = yymon_dict[nn_month] - 86400# 将时间戳转为字符
pos= max(np.where(time_axis <= month_ts)[0])
base_dt = dt_axis[pos]
base_ts = time_axis[pos]
gap_ts = month_ts - base_ts
char_ts = base_dt[:7] + gapts2day(gap_ts)
'2024-02-29 00:00:00'
3 字符·时间段
3.1 last_month_period
获取当月月初,和上月月初,推算中间的时隙即可
略
4 数值·时间点
默认按照左闭右开原则
4.1 last_n: 可选参为day, hour, minute, seconds,默认为0
原则上,在使用数值点判定时要求输入是数值(时间戳)。出于使用的方便,我们可以假定,用户可以指定字符或者数值,由对象内部进行自动转换。
假定,用户给到了字符,在有yymon_dict的情况下,很容转为时间戳
# 字符到时间戳
some_dt_str = '2024-01-31 11:11:11'
yymon, dhms =depart_mon_ddhhmmss(some_dt_str)
ts = yymon_dict[yymon] + ddhhmmss2s(dhms)
执行时间偏移
# 过去3天
last_n = 3
# 历史时间推算已完成
ts_hat = ts - last_n * 86400
再将时间戳进行转换
# 时间戳到字符
# 1 月日字符列表
# 2 推算位置
pos= max(np.where(time_axis <= ts_hat)[0])
base_dt = dt_axis[pos]
base_ts = time_axis[pos]
gap_ts = ts_hat - base_ts
char_ts = base_dt[:7] + gapts2day(gap_ts)
'2024-01-28 11:11:11'
4.2 next_n:可选参为day, hour, minute, seconds,默认为0
略
5 数值·时间段
5.1 last_n_period
略
5.2 next_n_period
略
5.3 period_btw
略
计算两个时间点之间的时间段
6 选择
时间操作一定会伴随着选择:选择数据中符合要求的记录。
6.1 对于点
进行筛选的规则为 gt, lt , eq, gte, lte 等五种。
略。
6.2 对于区间 period
一般来说分为 in 和out两种。
略。
结尾
- 略的原因是当前没什么需求,从原理上看也不存在障碍,所以先不开发。关键点还是先把现有的功能在对象中实现。
- 接下来主要将转换和偏移的基本功能封装进ATimer2就可以完成本次的项目任务了。
相关文章:
Python一些可能用的到的函数系列123 ATimer2-时间偏移
说明 之前确定了时间轴(千年历),以及时间的转换方法。其中时间轴的数据将会存储在集群,以及通过RedisOrMongo保存部分常用的数据。 本次讨论时间偏移的度量问题。 内容 1 两种形式 我们提到时间时,通常会有两种方…...

企业微信主体变更 怎么操作?
企业微信变更主体有什么作用?当我们的企业因为各种原因需要注销或已经注销,或者运营变更等情况,企业微信无法继续使用原主体继续使用时,可以申请企业主体变更,变更为新的主体。企业微信变更主体的条件有哪些࿱…...

《区块链简易速速上手小册》第8章:区块链的技术挑战(2024 最新版)
文章目录 8.1 可扩展性问题8.1.1 基础知识8.1.2 主要案例:比特币的可扩展性挑战8.1.3 拓展案例 1:以太坊的可扩展性改进8.1.4 拓展案例 2:侧链和分层解决方案 8.2 安全性与隐私8.2.1 基础知识8.2.2 主要案例:比特币交易的安全性8.…...

基于STM32的云上OneNET智慧大棚(包含程序设计报告)
目录 概要 作品介绍 设计原理 设计作品结构 软件部分 概要 为了解决传统农业生产效率低下,消耗大量的人力物力,不能精确的对农作物实现监控的问题,从而最大限度的提高农业生产力,实现优质、高产、低耗、环保的可持续发展物联…...

11.scala函数进阶
目录 概述函数scala函数和方法的区别第一种第二种方法转函数 函数柯里化 结束 概述 函数 vs 方法 1.定义 方法:def函数:> 2.方法本质上是一个特殊的函数3.函数是一等公民,函数可以当做值来传递,方法的参数,返回值…...

在WebSocket中使用Redis出现空指针异常解决方案
文章目录 在WebSocket中使用Redis1.问题描述2.原因3.解决步骤1.新建一个SpringUtil.java类,通过getBean的方法主动获取实例2.在WebSocketSingleServer.java中导入 在WebSocket中使用Redis 1.问题描述 在controller 和 service中都可以正常使用Redis,在…...

问题:第十三届全国人民代表大会第四次会议召开的时间是()。 #经验分享#知识分享#媒体
问题:第十三届全国人民代表大会第四次会议召开的时间是()。 A. 2018年3月3日至3月11日 B. 2019年3月5日至3月11日 C. 2020年3月5日至3月11日 D. 2021年3月5日至3月11日 参考答案如图所示 问题:顾客满意是顾客对一件产品满足…...

《区块链简易速速上手小册》第10章:区块链的未来与趋势(2024 最新版)
文章目录 10.1 区块链的未来展望10.1.1 基础知识10.1.2 主要案例:区块链在金融领域的发展10.1.3 拓展案例 1:区块链在供应链管理中的应用10.1.4 拓展案例 2:区块链在身份管理和隐私保护中的应用 10.2 新兴技术与区块链的融合10.2.1 基础知识1…...

JVM工作原理与实战(三十一):诊断内存泄漏的原因
专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、诊断原因 二、MAT内存泄漏检测的原理 总结 前言 JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线…...

#{}和${}的区别
#{}和${}的区别 .本质区别:使用注意事项防止SQL注入排序like查询 . 在使用mybatis操作数据库的时候,我们在编写sql语言的时候,会遇到一个问题,就是在传参的时候,有两个符号#,$.这两个符号有什么异同呢,接下来,我就会带着大家对这个问题进行简单的探讨 本质区别: #执行的是预编…...

【数据结构】(三)树Tree
目录 1、基本概念 2、二叉树Binary Tree 3、树、森林与二叉树的转换 4、赫夫曼树Huffman Tree与赫夫曼编码Huffman Coding 1、基本概念 (1)树(Tree)是 n(n ≥\geq 1)个节点的有限集,n 0时称…...
扩展坞 接两个显示器
笔记本电脑如何外接两个显示器,达到三个屏同时显示? 3 笔记本有 2 个显示扩展接口 目前笔记本中最常见的就是 1 个 HDMI 口 1 个支持 DP 协议的 Type-C 口或 2 个支持 DP 协议的 Type-C 口,此时使用 HDMI 线和 Type-C 转接线分别直连两台显…...

鸿蒙 ArkTS 从数组内查找指定的数据
let arr [1, 2, 3, 4, 5]; let target 3; let result arr.filter(item > item target); let a String(result) 将数字转换成文本型 console.log(a); 亲爱的读者: 首先,我要感谢您抽出宝贵的时间阅读这篇文章。我深知,您的每一分每一…...

qemu 抓取linux kernel vmcore
一、背景 在qemu调试linux kernel时 有时我们会遇到dump 情况,这时可以通过gdb 方式连接分析dump, 但实际中我们用得更多的是离线dump 分析,分析的文件通常是vmcore(linux kernel panic 生成的coredump文件)或者ramdu…...

RabbitMQ 死信队列应用
1. 概念 死信队列(Dead Letter Queue)是在消息队列系统中的一种特殊队列,用于存储无法被消费的消息。消息可能会因为多种原因变成“死信”,例如消息过期、消息被拒绝、消息队列长度超过限制等。当消息变成“死信”时,…...

除毛可以用宠物空气净化器吗?猫用空气净化器哪些品牌吸毛好?
作为一位长期养猫的铲屎官,我深刻理解只有养猫人才懂的困扰,那就是家里到处都是猫毛和异味。我发现自从开始养猫之后,家里的空气质量变得不佳。猫毛和皮屑飞扬,而且室内空气中的污染物也越来越多。这种低质量的空气对我们的健康有…...

有趣的css - 好看的呼吸灯效果
整体效果 这个效果主要用 css3 的 animation 属性来实现的。 这个效果可以用作在网站的整体 Loading,也可以放在网站首屏当一个 banner 的背景也是非常棒的! 代码部分 html 部分代码: <div class"app"><span class&quo…...

二叉树-堆应用(1)
目录 堆排序 整体思路 代码实现 Q1建大堆/小堆 Q2数据个数和下标 TopK问题 整体思路 代码实现 Q1造数据CreateData Q2建大堆/小堆 建堆的两种方法这里会用到前面的向上/向下调整/交换函数。向上调整&向下调整算法-CSDN博客 堆排序 整体思路 建堆(直…...

猫头虎博主第10期赠书活动:《写给大家看的Midjourney设计书》
博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通Golang》…...
线程池相关的类学习
Executor public interface Executor {//执行任务void execute(Runnable command); }ExecutorService public interface ExecutorService extends Executor {//关闭线程池,不能再向线程池中提交任务,已存在与线程池中的任务会继续执行,直到…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...

.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...

IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...

五子棋测试用例
一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏,有着深厚的文化底蕴。通过将五子棋制作成网页游戏,可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家,都可以通过网页五子棋感受到东方棋类…...
ubuntu22.04 安装docker 和docker-compose
首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...