首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将时间戳舍入到最接近的30秒

将时间戳舍入到最接近的30秒
EN

Stack Overflow用户
提问于 2021-10-26 01:39:51
回答 4查看 186关注 0票数 1

我的表格如下:

代码语言:javascript
运行
复制
t: ([]dt: 2021.10.25T09:30:28 2021.10.25T09:30:32;price:9.99 10.00)

我希望将时间戳舍入到最接近的30秒标记。我试着像这样使用xbar:

代码语言:javascript
运行
复制
update roundedDt: 30 xbar dt.second from t

然而,它似乎破坏了结果。两行的期望结果都应该是09:30:30。

一轮怎么能达到最接近的30秒?

EN

回答 4

Stack Overflow用户

发布于 2021-10-26 06:37:22

Jonathon的答案对于修改舍入是最灵活的,不只是几秒钟,但对于几秒钟的另一种简单解决方案是偏移15:

代码语言:javascript
运行
复制
q)update roundedDt:30 xbar 15+dt.second from t
dt                      price roundedDt
---------------------------------------
2021.10.25T09:30:28.000 9.99  09:30:30
2021.10.25T09:30:32.000 10    09:30:30

编辑:如果你想要完整的时间戳四舍五入,我会将它转换为易于处理的时间戳,并调整我的偏移量/xbar来匹配。

代码语言:javascript
运行
复制
q)update roundedDt:30000000000 xbar 15000000000 + `timestamp$dt from t
dt                      price roundedDt
-----------------------------------------------------------
2021.10.25T09:30:28.000 9.99  2021.10.25D09:30:30.000000000
2021.10.25T09:30:32.000 10    2021.10.25D09:30:30.000000000
2020.10.25T23:59:59.000 9.99  2020.10.26D00:00:00.000000000
2020.10.26T00:00:01.000 10    2020.10.26D00:00:00.000000000
票数 3
EN

Stack Overflow用户

发布于 2021-10-26 02:52:40

您可以尝试如下所示:

代码语言:javascript
运行
复制
update roundedDt:?[(`ss$dt)within(0;14);`time$(`int$`time$dt)-1000*`ss$dt;
    ?[(`ss$dt)within(15;44);`time$30000+(`int$`time$dt)-1000*`ss$dt;`time$60000+(`int$`time$dt)-1000*`ss$dt]] from t
票数 1
EN

Stack Overflow用户

发布于 2021-10-26 06:14:41

您可以使用xbar的修改版本,它舍入为最接近的整数,而不是地板:

代码语言:javascript
运行
复制
q)xbar2:{type[y]$x*"j"$y%x:$[16h=abs type x;"j"$x;x]}
q)update roundedDt:xbar2[30;dt.second] from t
dt                      price roundedDt
---------------------------------------
2021.10.25T09:30:28.000 9.99  09:30:30
2021.10.25T09:30:32.000 10    09:30:30

请注意,因为此函数是在根命名空间中定义的,所以必须使用括号表示法(xbar2[30;dt.second])。如果您希望使用中缀表示法(30 xbar2 dt.second),则需要在.q命名空间中定义函数,即.q.xbar2:{type[y]$x*"j"$y%x:$[16h=abs type x;"j"$x;x]}

xbar2基于原始的xbar,但其中xbar使用了div,它具有对结果求底的效果,这里使用的是%,它将产生浮点输出,然后将其转换为一个长整数,该整数将四舍五入为最接近的整数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69716523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档