资源下载站 wordpress,网络管理系统的层次结构,海原县城乡建设局网站,关键词林俊杰mp3在线听说明
之前确定了时间轴#xff08;千年历#xff09;#xff0c;以及时间的转换方法。其中时间轴的数据将会存储在集群#xff0c;以及通过RedisOrMongo保存部分常用的数据。
本次讨论时间偏移的度量问题。
内容
1 两种形式
我们提到时间时#xff0c;通常会有两种方…说明
之前确定了时间轴千年历以及时间的转换方法。其中时间轴的数据将会存储在集群以及通过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:003 字符·时间段
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:114.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就可以完成本次的项目任务了。