如何向上或向下取整日期?你好,
如果我有一堆格式为MMDDYYYY hh:mm的开放时间,并且我想解决这些在1am到3:59 am之间发生的日期,将其“舍入”到4am。
换句话说,如果我的开放时间是10/09/2020 3:12 AM,我需要将其舍入到10/09/2020 4:00 AM。
相反,我的Closetimes具有相同的格式,我想将在凌晨1点至凌晨3:59之间的任何这些日期都固定为“向下舍入”至凌晨1点。
换句话说,如果我的关闭时间是10/09/2020 3:12 AM,我需要将其四舍五入到10/09/2020 1:00 AM。
我对所有公式都使用JMP中的公式编辑器,因此,如果可以将解决方案粘贴到公式编辑器中,那就太好了!
我已附上样品表。
感谢您对此的任何帮助。
菲奥娜
数据表回复:如何向上或向下取整日期?该脚本说明了该方法:
Names Default to Here( 1 );
date time = 09Oct2020:03:12;
rounded date time = date time - Modulo( date time, In Hours( 1 ) ) + In Hours( 1 );
formatted rounded date time = Format( rounded date time, "m/d/y h:m" );
Show( date time, formatted rounded date time );
假设您想要一个具有所需Format列属性的数值,则实际公式可能会压缩到该表达式中:
Modulo( date time, In Hours( 1 ) ) + In Hours( 1 )
请注意,四舍五入到最接近的小时数只会删除表达式末尾增加的一小时。
回复:如何向上或向下取整日期?最有可能采用更清洁/更有效的方法来执行此操作,但这些方法应该可以起作用:
四舍五入的开放时间:
If(In Hours(1) <= Time Of Day(:Opentime) < In Hours(4),
(:Opentime - Time Of Day(:Opentime)) + In Hours(4),
:Opentime
)
四舍五入时间也一样:
If(In Hours(1) <= Time Of Day(:Closetime) < In Hours(4),
(:Closetime - Time Of Day(:Closetime)) + In Hours(1),
:Closetime
)
当您在日期列上的列名称上单击鼠标右键时,将基于JMP的“预制”公式构建解决方案日期和一天中的时间:

回复:如何向上或向下取整日期?非常感谢。
这有效!!