4
  1. VB6 のDateデータ型はどのくらい正確ですか (1 秒未満)?
  2. 秒の端数を表示するようにフォーマットする方法は?

私は何年も不在だった後に VB6 を再訪していますが、私の人生では、以前知っていたことを思い出せません。タグを付けることを検討しました(hur hur hur)。

その後、この API 呼び出しを見つけましたが、動作しているようです。

Declare Sub GetSystemTime Lib "kernel32.dll" (lpSystemTime As SystemTime)

Public Type SystemTime
  Year As Integer
  Month As Integer
  DayOfWeek As Integer
  Day As Integer
  Hour As Integer
  Minute As Integer
  Second As Integer
  Milliseconds As Integer
End Type
4

3 に答える 3

9

Dateデータ型は、Double範囲チェック (日付の最小値/最大値) と考慮されたエポックを含むデータ型に基づいています。つまり、特に VBA が厳密に型指定された言語ではないことを考えると、特に特別なことは何もありません。

連続体で時間を考える場合 (そして IMO はそうすべきです)、aDoubleが適しています。1 日 = 1 (整数) の倍精度浮動小数点の精度は、実質的に小数点以下 9 桁です。したがって、 type の値Double(したがってtype の値Date) は、1 秒未満の値に問題なく対応できます。

ただし、直面する問題は、VBA 内の時間関数 (、、、Nowなど)の最小粒度が1 秒であるということです。1 秒未満の精度で保存された日付値でそれらを使用すると、 1 秒に丸められます。VBA6用に書かれたユーザーコントロールなどについても同様です。DateSerialDateDiffDateAddDouble

もちろん、必要な一時関数の独自の実装を作成することもできStdDataFormatます ( VBA で MS Data Grid に丸めずに 1 秒未満の SQL Server 値を読み書きするために、ラッパー クラスを実装する必要があったことを思い出します)。独自のテンポラル データ型を展開しているように感じます (痛い!)

于 2008-10-09T12:34:51.733 に答える
3

1) 秒のみ、および

2) 仕方がない。

于 2008-10-09T10:30:32.157 に答える
1

VB6 の Date データ型は、秒の端数を処理できないと思います。

于 2008-10-09T10:27:09.807 に答える