2

秒を含む 2 つの日付を比較する必要があります。私はウェブを検索し、2つの方法を得ました。1つは importMicrosoft.VisualBasic dllです。同じデータを実行しても結果は同じではありません。C# は、VisualBasic をインポートせずに同じことを行うべきだと思います。誰かがC#で動作させる方法を教えてもらえますか?

前もって感謝します。

Microsoft.VisualBasic を使用するものがあります

 if (Math.Abs(DateAndTime.DateDiff(DateInterval.Second, 
     Conversions.ToDate(colFilesFound[RuntimeHelpers.GetObjectValue(rw["file_path"])]),
     Conversions.ToDate(rw["last_modified_timestamp"]), 
     FirstDayOfWeek.Sunday, FirstWeekOfYear.Jan1)) == 0L)
 {
     unchangedFileNum++;
     Console.WriteLine("unchange");
 }
 else
 {
     modifiedFileNum++;
     Console.WriteLine("change");
 }

Visual.dll を使用しない別の方法があります。

DateTime fileLastModifiedDate = Conversions.ToDate(colFilesFound[rw["file_path"]]);
DateTime dataLastModifiedDate = Conversions.ToDate(rw["last_modified_timestamp"]);
if (Math.Abs((fileLastModifiedDate - dataLastModifiedDate).TotalSeconds) == 0L)
{
     Console.WriteLine("File Date: " + colFilesFound[rw["file_path"]] + 
            " <> Database Date: " + Conversions.ToString(rw["last_modified_timestamp"]));
     unchangedFileNum++;
     Console.WriteLine("unchange");
}
else
{
     modifiedFileNum++;
     Console.WriteLine("change");
}
4

2 に答える 2

3

.NET で DateTimes を比較する正しい方法は、== 演算子を使用するか、DateTime.Compare()メソッドを呼び出すことです。

    DateTime fileLastModifiedDate = ...;
    DateTime dataLastModifiedDate = ...;

    if (fileLastModifiedDate == dataLastModifiedDate)
    {
       ...
    }

精度を考慮する必要があります。場合によっては、ミリ秒を考慮するのに十分な精度が得られないことがあります。この場合、ミリ秒を考慮せずに日付を比較する必要があります。

public static bool IsSameDateWithoutMilliseconds(DateTime d1, DateTime d2)
{
    return d1.Subtract(d2).TotalSeconds == 0;
}
于 2013-03-27T17:34:19.387 に答える
0

DateTimes を確認する方法とおそらく同じではないため、問題はおそらくミリ秒です。

DateTime fileLastModifiedDate = Conversions.ToDate(colFilesFound[rw["file_path"]]);
DateTime dataLastModifiedDate = Conversions.ToDate(rw["last_modified_timestamp"]);

fileLastModifiedDate = fileLastModifiedDate.AddMilliseconds(-fileLastModifiedDate.Millisecond);
dataLastModifiedDate = dataLastModifiedDate.AddMilliseconds(-dataLastModifiedDate.Millisecond);

if (DateTime.Compare(fileLastModifiedDate, dataLastModifiedDate) == 0)
{
    // dates are equal
}
else
{
    // dates are not equal
}
于 2013-03-27T17:40:36.263 に答える