[ABI 5.2] 日期控件如何实现跳转后传递的时间减去12小时赋值给下一个界面的同名日期控件?

185
3

esen_4QBPI1VXAV 初学数据Lv2

发表于2026-6-8 14:46

悬赏20

已解决

楼主
点击“<<”是往前倒12小时的意思

最近看过此主题的会员

陈俊浩

man8out

admin

esen_4WI8JHGYXX

最佳答案
楼主你的格式是 'yyyymmdd HH:MM:SS' 其中@date表示'yyyymmdd',由你的格式可以知道,返回的内容是一个定长拼接字符串,8位date,1位空格,8位时分秒,一共是17位的字符串。

我们用变量@date表示字符串'yyyymmdd',用@time表示字符串'HH:MM:SS'

随后进行字符串处理,取字符串'HH',left(@time,2)
取数字HH,asnum(left(@time,2))

然后进行减去12小时的操作,这里有两种情况:1是其自身大于等于12,减去12小时不改变日期,一种是其自身小于12,那么需要改变日期并进行退位,举例,如果小时为13,那么减去12变为1,如果小时为5,那么应该变为17,可以看到逻辑是如果小时大于等于12就减去12,如果小时小于12那么就加12,在这里我们可以用取模操作,即 统一为 (HH+12) % 24

还有一个小问题,即小时字符串'13‘变为数字13,然后减去12后变为数字1,需要再变为字符串'01',即小时的数字被转化为字符串时如果位数是一位则需要填充一个字符'0'

完整逻辑如下:

顺序定义变量

@HH_num=asnum(left(@time,2))
@HH_num_sub_12=(@HH_num+12) % 24
@HH_str_new=''

if(@HH_num_sub_12 < 10,@HH_str_new='0'+asstr(@HH_num_sub_12),@HH_str_new=asstr(@HH_num_sub_12))
if(@HH_num < 12,@date=ob(@date,'d-1'),true)

@HHMMSS_NEW=@HH_str_new+right(@time,6)

@datetime_new=@date+' '+@HHMMSS_NEW
3个回答

只看楼主

man8out 数据小白Lv1

发表于2026-6-8 14:46

只看该作者

取消 关注该作者的回复

地板

楼主你的格式是 'yyyymmdd HH:MM:SS' 其中@date表示'yyyymmdd',由你的格式可以知道,返回的内容是一个定长拼接字符串,8位date,1位空格,8位时分秒,一共是17位的字符串。

我们用变量@date表示字符串'yyyymmdd',用@time表示字符串'HH:MM:SS'

随后进行字符串处理,取字符串'HH',left(@time,2)
取数字HH,asnum(left(@time,2))

然后进行减去12小时的操作,这里有两种情况:1是其自身大于等于12,减去12小时不改变日期,一种是其自身小于12,那么需要改变日期并进行退位,举例,如果小时为13,那么减去12变为1,如果小时为5,那么应该变为17,可以看到逻辑是如果小时大于等于12就减去12,如果小时小于12那么就加12,在这里我们可以用取模操作,即 统一为 (HH+12) % 24

还有一个小问题,即小时字符串'13‘变为数字13,然后减去12后变为数字1,需要再变为字符串'01',即小时的数字被转化为字符串时如果位数是一位则需要填充一个字符'0'

完整逻辑如下:

顺序定义变量

@HH_num=asnum(left(@time,2))
@HH_num_sub_12=(@HH_num+12) % 24
@HH_str_new=''

if(@HH_num_sub_12 < 10,@HH_str_new='0'+asstr(@HH_num_sub_12),@HH_str_new=asstr(@HH_num_sub_12))
if(@HH_num < 12,@date=ob(@date,'d-1'),true)

@HHMMSS_NEW=@HH_str_new+right(@time,6)

@datetime_new=@date+' '+@HHMMSS_NEW

陈俊浩 初学数据Lv2

发表于2026-6-9 09:35

只看该作者

取消 关注该作者的回复

沙发

你直接将参数传递下去,然后减去就行了啊

esen_4QBPI1VXAV 初学数据Lv2

发表于2026-6-9 11:38

只看该作者

取消 关注该作者的回复

板凳

陈俊浩 发表于 2026-6-9 09:35
你直接将参数传递下去,然后减去就行了啊

开始日期控件名称是@date,我想传到下一个界面执行@date=@date-12h,公式怎么写呢?怎么直接减呢

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号