投稿日 | : 2003/08/22(Fri) 10:46 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : Re^6: ミリ秒の足し算 |
> > という代物なのですが、やはり始めの時刻をDate型以外の型で保持しておいて
> > Date型に変換するしかないのでしょうか?
> 「日付型」をヘルプで調べれば、日付型ではミリ秒は格納できないことが分かります。
ちなみに、SWbemDateTimeオブジェクトという物もあります。
これだと、(1601年1月1日以降のデータであれば)100ナノ秒単位の情報までを正確に保持可能です。
また、プロパティの設定によっては、(時刻ではなく)時間として扱うように変更する事も出来ます。
Set o = CreateObject("WbemScripting.SWbemDateTime")
o.SetVarDate Now, True 'VBのDate型を、時差情報付きで格納
o.Microseconds = 123456 'マイクロ秒の部分の情報を修正
y = o.Year '32bit整数型として取得(年)
m = o.Month '32bit整数型として取得(月)
d = o.Day '32bit整数型として取得(日)
h = o.Hours '32bit整数型として取得(0〜23)
n = o.Minutes '32bit整数型として取得(0〜59)
s = o.Seconds '32bit整数型として取得(0〜59)
z = o.Microseconds '32bit整数型として取得(0〜999999)
v = o.GetFiletime '64bit整数値を表す文字列として取得(最小単位:100ナノ秒)
x = o.GetVarDate() 'VBの日付型として取得(最小単位:1秒)
f = o.Value 'yyyymmddHHNNSS.mmmmmmsUUU+XXX形式の文字列として取得
ただしこれは WMI系のオブジェクトなので、古いOS環境の場合は、
別途、Windows Management Instrumentation のセットアップが必要です。
(最近のOSなら、標準でWMIが利用できますけれどね)
もし、WMIが無い環境でも使いたいなら、VB標準の Double や 10進型Variant などを
使って、自前で数値←→日時変換処理を書いた方が良いかも知れません。