日付を切り上げまたは切り捨てるにはどうすればよいですか?こんにちは、
MMDDYYYY hh:mm 形式の営業時間がたくさんあり、午前 1 時から午前 3 時 59 分までの間に発生するこれらの日付のいずれかを修正して、午前 4 時に「切り上げ」たいとします。
つまり、営業時間が 2020 年 10 月 9 日午前 3 時 12 分である場合、2020 年 10 月 9 日午前 4 時に切り上げる必要があります。
逆に、同じ形式の Closetimes があり、午前 1 時から午前 3 時 59 分の間に発生するこれらの日付を午前 1 時に「切り捨てる」ように修正したいと考えています。
つまり、Closetimes が 2020 年 10 月 9 日 3:12 AM の場合、2020 年 10 月 9 日 1:00 AM に切り下げる必要があります。
私はすべての数式に JMP の数式エディターを使用しているので、ソリューションを数式エディターに貼り付けることができれば、すばらしいことです。
サンプルテーブルを添付しました。
これについて何か助けてくれてありがとう。
フィオナ
データ表Re: 日付を切り上げたり切り捨てたりするにはどうすればよいですか?どうもありがとう。
これは機能します!!
Re: 日付を切り上げたり切り捨てたりするにはどうすればよいですか?ほとんどの場合、これを行うためのよりクリーンで効率的な方法がありますが、これらは機能するはずです。
丸められた営業時間:
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によって「事前に作成された」式に基づいて構築されたソリューション日にちと時刻:

Re: 日付を切り上げたり切り捨てたりするにはどうすればよいですか?このスクリプトは、アプローチを示しています。
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 列属性を持つ数値が必要であると仮定すると、次の式に圧縮される可能性があります。
:date time - Modulo( :date time, In Hours( 1 ) ) + In Hours( 1 )
最も近い時間に切り捨てると、式の末尾にある 1 時間の加算が単純に削除されることに注意してください。