みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
時間計算についてです。
終了時間フィールドから経過時間フィールドを引いて、開始時間を算出したいです。
例)終了時間 10:00、 経過時間 5.5時間とした場合、開始時間4:30を求めたいです。
終了時間フィールドは、時刻。
経過時間フィールドは、数値です。
開始時間フィールドの計算式を教えていただきたいです。
Offline
終了時間 - 経過時間 * 3600
Offline
ありがとうございます!試してみます。
Offline
Time()という関数もあります。
Time(5.5;0;0)が5.5時間です。
>>
Time()という関数もあります。
Time(5.5;0;0)が5.5時間です。
Time()という関数についても詳しく教えていただきたいです!
終了時間フィールドは、時刻。
経過時間フィールドは、数値。
開始時間フィールドに、どのような計算式を入れて、時刻にしたら良いのでしょうか。
Offline
時刻から時間を引けばいいので
終了時間 - Time(経過時間;0;0)
開始時刻が昨日になると、マイナス表示になります。
どうしたら良いのでしょうか。
Offline
終了時刻を、タイムスタンプにしておけばいいです。
Offline
すみません、まったくの素人で。
タイムスタンプとは何でしょうか。
Offline
終了時間をタイムスタンプにすると日付が1.1.1(月)になります。
Offline
FileMakerでは時間と時刻の区別ができないので、日をまたぐ計算なら日付も入力しないとだめってことです。
日付を無視したければ、適当に大きい24時間の倍数を足して、24時間で割った余りを使います。
Time ( 0 ; 0 ; Mod(終了時間 - Time(経過時間-24000;0;0) ; Time ( 24 ; 0 ; 0 ) ) )
(時間を数値演算すると秒数になるのでTime()で時間に変換する)
ご回答ありがとうございます。
試して見ます。
Offline
もう一つ質問なんですが、終了時間のフィールドをタイムスタンプにするときって、単純に終了時間のフィールドを時刻からタイムスタンプにすれば良いだけではないのですか?
すでに、終了時間が入力されているレコードが存在していて、時刻フィールドからタイムスタンプに変えた時に、時刻フィールドでは、15:00と表示されていたのに、1.1.1(月)15:00と表示されてしまいました。
どうすれば、正しい日付が入力されるのでしょうか。
ちなみに、別に日付を入力している日付フィールドが存在しています。
補足になりますが
>別に日付を入力している日付フィールドが存在
それなら、終了時間はそのまま時間フィールドで、計算に日付フィールドも使えばいいのです。
Timestanpからであれば何時間引いても結果はTimestanpなので、そこから時刻部分だけ取り出す。
GetAsTime ( Timestamp ( 日付 ; 終了時刻 ) - Time ( 経過時間 ; 0 ; 0 ) )
FMの時間タイプでは時刻と時間の区別がないので、時刻のつもりでも時間を加減すると、マイナスや24:0:0以上の値にもなります。
Timestampの時間部分はあくまでも時刻なので、24時間範囲外の値は関数の入力などとしては受け付けますが結果には出てきません。
himadaneeさんの最初の余りを使う方法とタイムスタンプを使う方法、どちらでもうまく計算結果を出すことができました。
補足も大変参考になりました。ありがとうございました。
Offline
Pages: 1
[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 575.04 KiB (Peak: 591.95 KiB) ]