時刻を正しく取得するには?

解決


メンタル  2003-12-13 01:21:44  No: 110658

質問させていただきます。
例えば、ちょうど午後7時00分00秒になったら絵を変える・・など、
きっちり何時0分0秒の時に何らかの動作をさせるプログラムを作りました。
プログラムは以下の通りです。
Jikan = Mid(Time, 2, 1)
If Jikan = ":" Then
    Jikan = Mid(Time, 1, 1)
    hun1 = Mid(Time, 3, 1)
    hun2 = Mid(Time, 4, 1)
    Byou1 = Mid(Time, 6, 1)
    Byou2 = Mid(Time, 7, 1)
    If hun1 = 0 And hun2 = 0 And Byou1 = 0 And Byou2 = 0 Then
       'ここに、00分00秒になったときの処理
    End If
Else
    Jikan = Mid(Time, 1, 2)
    hun1 = Mid(Time, 4, 1)
    hun2 = Mid(Time, 5, 1)
    Byou1 = Mid(Time, 7, 1)
    Byou2 = Mid(Time, 8, 1)
    If hun1 = 0 And hun2 = 0 And Byou1 = 0 And Byou2 = 0 Then
        'ここに、00分00秒になったときの処理
    End If
End If
jikanはstring、他はinteger型で宣言しました。
ところが、
windowsXPにてエラーが出る場合と、XPでも正常に動く場合があるという
二つの報告を受けました。
このエラーはパソコンの時刻設定に関係するものなのでしょうか?
それとも、プログラム上のミスなのでしょうか?
どなたかご教示お願いいたします。


とろ  2003-12-13 01:30:44  No: 110659

> Jikan = Mid(Time, 2, 1)

Time ( Date 型)を String 型に暗黙的に変換した時の書式は
コンパネの地域のプロパティの設定によって、異なります。
それなので、明示的に Format 関数を使用して変換するようにしましょう。

Jikan = Mid(Format(Time, "hh:nn:ss"), 2, 1)
こんな感じ?

でも、この場合は
Hour(), Minute(), Second() 関数を使えばよさそうですが...


とろ  2003-12-13 01:32:29  No: 110660

あるいは、こんな感じですか。

If Format(Time, "nnss") = "0000" Then
  '* 0分0秒の時の処理
  
End If


無案  2003-12-13 03:57:38  No: 110661

>このエラーはパソコンの時刻設定に関係するものなのでしょうか?
>それとも、プログラム上のミスなのでしょうか?

パソコンの時間設定、サービスパックの適用状況に関係し、
とろさんの言うと降り、Format関数を使っていないと言う点では、
プログラム上のミスとまでは言いませんが、品質を求める上では危険です。


メンタル  2003-12-13 09:24:58  No: 110662

とろさん>
なるほど・・地域のプロパティの設定によって、違うのですね。
format関数を使って明示的に宣言する方法、ありがとうございました。
そして、おっしゃるとおりhour()などを使って同じ事が実現できました。
重ね重ね、ありがとうございました。

無案さん>
そうですね、環境に左右されてしまうと
のちのち困ることになってしまうんですね。
ご意見、とても参考になりました。ありがとうございました。

お二人とも本当にありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加