比较日期时间得到不同的结果

时间:2013-03-27 17:28:43

标签: c#

我需要比较两个日期,包括秒。我在网上搜索了两个方法。一个是导入Microsoft.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");
}

2 个答案:

答案 0 :(得分:3)

在.NET中比较DateTimes的正确方法是使用==运算符或调用DateTime.Compare()方法:

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

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

您需要考虑 preciaion 。有时,您无法考虑毫秒。在这种情况下,您需要比较日期而不考虑毫秒:

public static bool IsSameDateWithoutMilliseconds(DateTime d1, DateTime d2)
{
    return d1.Subtract(d2).TotalSeconds == 0;
}

答案 1 :(得分: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
}
相关问题