1

以下は、VS2010の私の即時ウィンドウからのコピーアンドペーストです。Now関数の文字列表現は同じですが、バイナリ表現が大きく異なることに注意してください。CDateからNow関数をアンラップしても違いはありません。なんで?

?CDate(Now)

1/8/2013 10:06:46 AM

?CDate(Now.ToString)

1/8/2013 10:06:52 AM

?CDate(Now.ToString).ToBinary

634932364230000000

?CDate(Now).ToBinary

-8588439384563815032

?Now.ToBinary

-8588439380551725996

現在、すべての行でまったく同じ時刻で作業していることに注意してください。ToString関数を使用すると、なぜ「異常な」数値結果が得られるのですか?

?Now.ToBinary

-8588439366264255565

?datetime.FromBinary(-8588439366264255565)

1/8/2013 10:37:39 AM

?datetime.FromBinary(-8588439366264255565).ToBinary

-8588439366264255565

?cdate(datetime.FromBinary(-8588439366264255565).ToString ).ToBinary 

634932382590000000

?CDate(datetime.FromBinary(-8588439366264255565)).ToBinary

-8588439366264255565
4

2 に答える 2

1

「Now」は、常に変化する現在の日付/時刻を保持します。値を同じままにしたい場合は、最初に変数に割り当ててから、残りのコードでその変数を使用します。

編集

ミリ秒単位の小さな変化を見たい場合は、次のようなものを使用してみてくださいNow.ToFileTime

于 2013-01-08T18:25:34.697 に答える
0

これは、DateTime.Now の精度がミリ秒であるためですが、ToString を呼び出すと、ミリ秒が出力されません。2 つの日付は、もはや同じではありません。

ミリ秒を含む形式で日付を出力すると、同じ結果が得られます。

Dim testDate = DateTime.Now()
Console.WriteLine(testDate.ToBinary)
Dim testDateToString = CDate(testDate.ToString("O"))
Console.WriteLine(testDateToString.ToBinary)

出力:

-8588439319484221453
-8588439319484221453
于 2013-01-08T19:49:09.550 に答える