-
Notifications
You must be signed in to change notification settings - Fork 41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Backend] 环境属性生效时间只支持周期 #432
Comments
决策 1配置后, 是相对的时间还是时区相关的时间
相对时间是 |
只能是绝对时间, 谁在哪个时区配的, 就是这个时区的时间 => 所以保存的值, 可以统一转UTC 的小时分钟秒, 计算的时候统一以服务器获取 UTC 时间来做比较. 如果是相对时间, 可以无限切换时区获得权限; |
逻辑saas => 字符串, 带时区; (展示时, 需要根据用户时区转换过去) 存: UTC => HHMMSS 080000 - 235959 算 ts => UTC => HHMMSS 比较 |
|
注意, 如果未来需要加入周期性限制, 例如周一到周五的 20:10 - 21:20, 那么通过以下方式扩展 current_weekday in [1 2 3 4 5] 暂时不考虑支持每月/每年; 周期性的就不是绝对时间戳, 会涉及时区问题, 会涉及需要接入系统传入, 如何处理/统一时区需要考虑
此时, 如果要配置 |
计算,
这里只需要关注配置方的意图; 配置了哪个时区, 就是为了限制这个时区 |
统一根据用户时区转换成 utc时区? 或者
结论: 存储配置者指定的时区, 计算时, 转到相应时区并完成计算. 这个对于所有方理解都能达成一致; 唯一的问题是, 存储上会比较长; 方案 1: 不做任何差异化, 通通设置
|
k8s cronjob 关于 timezone的讨论:
文档: https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#cron-job-limitations 目前的实现还是依赖于服务器时间, 不支持timezone |
计算逻辑
问题: 需要给每一条policy生成一个env, 因为不同的policy的tz可能不一样 => 用户+继承来的, 每条策略计算前都得生成放到ctx |
两个点:
结论: 第一期: 支持每天的 几点几分几秒 到 几点几分几秒
未来, 支持每周/每月/每年的几月等
|
someWhere, err := time.LoadLocation("Asia/Shanghai")
t1 := time.Now().In(someWhere)
fmt.Println(t1)
fmt.Println(t1.Hour())
fmt.Println(t1.Minute())
fmt.Println(t1.Second())
fmt.Println("hms:", 10000*t1.Hour()+100*t1.Minute()+t1.Second())
fmt.Println(t1.Month(), int(t1.Month()))
fmt.Println(t1.Day())
fmt.Println(t1.Weekday(), int(t1.Weekday()))
fmt.Println(t1.Year())
fmt.Println(t1.YearDay()) |
t := time.Now()
ctx := get_from_cache(t.Unix())
func get_from_cache(t int64, tz string) ctx {
if cache.has(t, tz) {
return cache.get(t)
}
return ctx {
tz : tz,
hms: hms,
// later:
weekday: 3,
monthday: 1,
year: 1
month: 12,
yearDay: 33,
}
} |
限制: 同一条策略, 只能存在一个时区!!!!! |
重点关注:
例如, 配置每天 08:00-10:00, 那么另外一个时区用户使用时, 对使用者来说其时间不一定是 08:00-10:00
锚定零时区?
The text was updated successfully, but these errors were encountered: