ご質問(Time関数)
(1)Time関数は次のような二つの顔を持っていると
理解していいのでしょうか。
A.現在の時刻を返す、その書式は「15:26:29」
B.数式例えば「1-Time」のように使われるとTimeが
1以下の小数というデータを持っているのでその値を
RestTime(残り時間)に代入することができる。
1日が数字の1と定義されているから1秒は
1/60*60*24という小数になりますね。
RestTime=1-Time
(2)すなわちTime関数は小数値というデータを持っている。
Label_kakuninn.Caption=Time という使い方
もう一方の使い方は
RestTime=1-Time 現在の時刻を小数に換算して
残り時間を計算する
このような理解で正しいのでしょうか。
Time関数はシステム時刻を内部処理形式 Date の Variantで返します。
実体は24:00:00を1とする小数です。
MsgBox CDate(0.5)
とやってみればわかるように、小数をDate型として表示すると
hh:nn:ss の表記になります。
変数内に「hh:nn:ss」という書式で保持しているわけではありません。
> RestTime=1-Time 現在の時刻を小数に換算して
> 残り時間を計算する
原理的には可能ですが、
負の小数で問題を生じやすいので、Datediffを使ってください。
MsgBox Format(CDate(0), "yyyy/mm/dd hh:nn:ss")
とすればわかりますが、時間計算は
実は内部では1899年12月30日0時0分0秒を原点とする
経過時間の差とみなして計算しています。
Say さん、有難うございました。
MsgBox CDate(0.5) これは12:00:00:00と表示されました。
また、
MsgBox Format(CDate(0), "yyyy/mm/dd hh:nn:ss")は
1899/12/30 00:00:00と表示され、おっしゃることが確認できました。
ただ、Datediff関数についてはこれからStudyします。
解らないところがあれば再度ご質問します、超初心者の質問に対し
ご親切に教えていただき有難うございました。
理解できました、Time関数が二つの顔を持っているのではなく、これは小数
というデータを持っているのですね。
ただFormat関数を使って表示のスタイル(hh:mm:ss)を任意に変えているから、こんな理解になってしまったようです。
有難うございました
ツイート | ![]() |