時間単位で切り上げる計算式(翌日にも反映)

この記事は次のブログに引っ越しました。

■[Filemaker]時間単位で切り上げる計算式(翌日にも反映) 11:26 時間単位で切り上げる計算式(翌日にも反映)を含むブックマーク CommentsAdd Star タイムカードのように、打刻した時間を15分区切りで時間を切り上げ、24時をまわったら翌日にも反映させたい場合の計算式というかポイント(コツ)です。 ■ポイント (1) 指定した日時を、日付と時刻に一度分ける (2) 時刻を15分区切りで切り上げる (3) タイムスタンプに戻す ■前提条件 「タイムスタンプ_指定」フィールドに、現在の(もしくは指定した)切り上げ前の日時のタイムスタンプをセットしておく。 下記の計算式で、15分区切りで切り上げたタイムスタンプが返ってきます。 ■計算式 If( not IsEmpty( タイムスタンプ_指定 ); Let([ $指定日付 = GetAsDate ( タイムスタンプ_指定 ); $指定時刻 = GetAsTime ( タイムスタンプ_指定 ); $修正_年 = GetAsNumber( Year( $指定日付) ); $修正_月 = GetAsNumber( Month( $指定日付) ); $修正_日 = GetAsNumber( Day( $指定日付 ) ); $修正_時 = Hour( Ceiling ( $指定時刻 / ( 15 * 60 ) ) * 15 * 60 ); $修正_分 = Minute( Ceiling ( $指定時刻 / ( 15 * 60 ) ) * 15 * 60 ); $修正_秒 = 0 ]; Timestamp ( Date ( $修正_月 ; $修正_日 ; $修正_年 ) ; Time ( $修正_時 ; $修正_分 ; $修正_秒 ) ) ); "" ) 【詳細】 下記は、計算式でなくフィールドで処理したい場合です。 書式は、「フィールド名」= 計算値 です。 ■入力 「タイムスタンプ_作成」 = Get( タイムスタンプ ) ※TimeStamp関数で指定してもよい ■自動計算(1) 「指定日付」 = Date ( Month( タイムスタンプ_作成 ) ; Day( タイムスタンプ_作成 ) ; Year( タイムスタンプ_作成 ) ) 「指定時刻」 = Time ( Hour( タイムスタンプ_作成 ) ; Minute ( タイムスタンプ_作成 ) ; Seconds ( タイムスタンプ_作成 ) ) ■自動計算(2) 「修正_時」 = Hour( Ceiling ( 指定時刻 / ( 15 * 60 ) ) * 15 * 60 ) 「修正_分」 = Minute( Ceiling ( 指定時刻 / ( 15 * 60 ) ) * 15 * 60 ) 「修正_月」 = GetAsNumber( Month ( 指定日付 ) ) 「修正_日」 = GetAsNumber( Day( 指定日付 ) ) ■自動計算(3) 「タイムスタンプ_修正」 = Timestamp ( Date ( 修正_月 ; 修正_日 ; 修正_年 ) ; Time ( 修正_時 ; 修正_分 ; 0 ) )