10代と話して驚いたこと

VisualBasic6.0のFormat関数で時刻をあらわす方法でFormat(CStr(Now),"h:mm:ss")としていますが、mSecをあらわすときはどうしたらいいのでしょうか。どなたか教えてください。
VB.NETのffを使ってみましたがだめでした。

A 回答 (3件)

Now関数では ミリセカンドの精度は持っていないようです


dim d as Double
d = now
' 日付部分を削除
d = d - Fix(d)
' 秒単位に変換
d = d * 24. * 60 *60
' 秒部分を削除
d = d - Fix(d)
といった具合にすれば 秒未満の数値が取り出せそうですがここまでの分解能が無いため浮動小数点の誤差程度の値しか求まりません

ミリ秒を取得するのであれば WinAPIのGetSystemTimeなどを使ったほうがいいでしょう

Private Declare Sub GetSystemTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
といった具合で宣言して

dim st as STSEMTIME
GetSystemTime st
debug.print st.wMilliseconds
といった具合で取り出せますよ
    • good
    • 2
この回答へのお礼

ありがとうございます。早速試してみます。

お礼日時:2007/08/14 13:49

http://homepage1.nifty.com/MADIA/vb/API/GetSyste …
にも類似課題を扱っているサイトがあり増した。
ミスタイプもあり修正し
Public Declare Sub GetSystemTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)

Public Type SYSTEMTIME
wYear As Integer '西暦
wMonth As Integer '月
wDayOfWeek As Integer
wDay As Integer '日
wHour As Integer '時間
wMinute As Integer '分
wSecond As Integer '秒
wMilliseconds As Integer
End Type
Sub test01()
Dim st As SYSTEMTIME

GetSystemTime st
MsgBox st.wMilliseconds
End Sub
で動くことを確認しました。
参考までに。良くわかっている人にはなんでもないミスが、
学んでいる人には、途方にくれる場合があると思って。
    • good
    • 0
この回答へのお礼

ありがとうございます。
使ってみます。

お礼日時:2007/08/15 08:51

日付はNowから取得し時刻はその日の0時からの通算時間を表す


Timerを計算編集して使うという方法があります。
ただしNowが表す時刻とTimerが表す時刻が一致するかは
分かりません。聞いた話では一致しないときもあるとか。
ご参考までに。
    • good
    • 0
この回答へのお礼

ありがとうございます。
今回はAPIの使用がわかりやすいのでその方法で以降と思います。
また教えてください。

お礼日時:2007/08/14 13:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A