過去の桐井戸端BBS (桐ver.8)
13444 #日時値は時間までカウントしているものではないのでしょうか? YATA 2001/10/12-10:46
こんにちは、いつも大変参考にさせていただいてます。
さて、ある工程間に関して消費時間計算したいのですが、現状は以下のようにしています。(使用バージョンはVer8 SP6です)

フォーム画面でトルグボタンを配置して押したときに、#日時値を使って[投入日][組立開始日]に、今の日付を入力しています。
それを、#日数(#文字列([投入日]),#文字列([組立開始日]))としてかかった日数を計算して[消費日数]にいれています。

しかし、この方法では日数は出ても、その単位は日数(当たり前ですが・・)になり時間を出すことは出来ません。
(例:1日と1時間30分=1440分+90分1530=分のように)。
この場合、何かスマートに行う関数又は、方法があるのでしょうか?
ちなみに#日時値は時間までカウントしているものではないのでしょうか?
宜しくご指導くださいますよう宜しくお願いいたします。
13447 Re:#日時値について教えてください。 【多遊】 2001/10/12-12:30
記事番号13444へのコメント
YATAさん>こんにちは

>ちなみに#日時値は時間までカウントしているものではないのでし
>ょうか?
秒まで計算されてると思います。
表示形式で、分まで表示を選択してください。

ちょうど、最近同じ計算を行いました。

>#時間数値((#日時値([日付])-#日時値("1970/1/1")),3)

この式は、固定日時から、文字列で記録されてる日時:項目名[日付]までの経過時間を、秒で計算し、数値で表示したものです。

これを利用すればできるのかなと?

#時間数値((#日時値([組立開始日])-#日時値([投入日])),3)
※最後の3は秒です。修正してください。

参考程度に

13449 Re:#日時値について教えてください。 うにん 2001/10/12-12:44
記事番号13444へのコメント
YATAさん

[投入日][組立開始日]が日時型なら、[消費日数]を時間型にして、
計算式を[組立開始日]-[投入日]にするだけでいいのでは?
あとは「項目の表示条件」の「表示幅」で表示範囲を分まで表示にするなり。
(日数が分単位てのはちょっと変ですから項目名を変えた方がいい?)
桐5だと日時が文字列だったから苦労しますが、桐8は型が増えたので素直にやればできます:-)

13452 Re:#日時値について教えてください。 【多遊】 2001/10/12-13:22
記事番号13449へのコメント
うにんさんは No.13449「Re:#日時値について教えてください。」で書きました。

>桐5だと日時が文字列だったから苦労しますが、桐8は型が増えたので素直に
>やればできます:-)

質問のとき、項目の型まで書いていただけると本当にいいですね。


13454 Re:#日時値について教えてください。 アックン 2001/10/12-16:11
記事番号13444へのコメント
YATAさん、こんにちは。

>#日時値は時間までカウントしているものではないのでしょうか?
表示にかかわらず、秒単位まで保持しています。

[消費日数]の項目計算式をこうしてみてください。

#時間数値([組立開始日]-[投入日],2)

これで分単位で求められます。

【多遊】さん>
質問内容からすると、
[消費日数]は#日数の戻り値である数値型、
[投入日]と[組立開始日]は#日時値の戻り値である日時型でしょう。
#文字列[投入日]と変換している点からもそう思いますが。(^^;

アックン(=^・^=)
13462 #日時値とは 佐田 守弘 2001/10/13-01:44
記事番号13444へのコメント
YATAさん

■ 日時型と時間型の概念
始めに日時型と時間型の概念についてお話します。
まず最初に頭の中に過去(正しくは西暦元年の元旦)から未来(正しくは約6万5千年の大晦日)まで続く時間軸を描いて下さい。

●日時値は日付時刻を表す
そして、この時間軸上の1点が時刻で、年月日時分秒で表されます。
桐の日時型は、この1点の時刻を表すデータです。正確には線分の1秒単位の不連続値ですが、
連続した時刻値と考えて良いでしょう。

●時間値は2点の時刻の間隔を表す
一方、時間軸上の2つの点は各々時刻を表す日時値ですが、その2点の距離は時間差になります。
桐の時間値は、この時間差を表すデータ型です。

●日時値、時間値の加減算
以上の概念から分かると思いますが、
・2つの日時値の差
 日時値どうしの差は、2点の時刻の間の時間差を表すわけなので、時間型になります。
・日時値に時間値を加減算する
 日時値に時間値を加減算すれば、その時間値だけ前後させた時刻になりますから、結果は時刻である日時値になります。

■質問の件について
御質問の日時型で表した2つの日付は、「#日時値」関数で得ていれば、その瞬間の日付時刻値になります。
そして、求めたい時間差ですが、上の説明から分かる通り、「#日差」関数を使う必要はなく、
 [終了日時]-[開始日時]
といった単純な引き算で求められます。これが日時型のミソです。
時間型ですから、書式を選ぶだけで「何日何時間」あるいは「何時間」といった形で表現でき、表示や印刷が行えます。

しかしながら得られた値は時間型になるので、そのままでは通常の数値として演算する事はできません。
数値として扱うには、「#時間数値」の様な関数を用いて、指定時間単位での数値に変換します。

佐田守弘(KS-00119)
13498 Re:#日時値について教えてください。 YATA 2001/10/15-20:06
記事番号13444へのコメント
みなさん本当に参考になる御意見有難うございました.大変参考になりました。
私の作っている桐のシステムも0からのスタートですが、
ようやく骨になる部分がクラゲ程度ではありますが形になってきました。
今後とも宜しくお願いいたします。

戻る