我有两个正在返回的日期值,然后需要对这些值进行比较以确保文件的lastWriteDate自缓存以来尚未更新。
我遇到的问题是,lastWriteDate包含毫秒数,而clientDate则没有。因此,当进行比较时,如果lastWriteDate在同一秒内,它将始终更大。
if (!(Request.Headers["If-Modified-Since"] == null))
{
DateTime clientDate = Convert.ToDateTime(Request.Headers["If-Modified-Since"]);
DateTime lastWriteDate = System.IO.File.GetLastWriteTime(newImagePath);
if (lastWriteDate <= clientDate)
{
//Code here not being reached
}
}
这些毫秒对于我进行的比较并不重要,那么在没有它们的情况下比较这些值的最佳方法是什么?
答案 0 :(得分:4)
从另一个中减去一个日期。那么你最终得到一个TimeSpan对象,你可以简单地检查秒数并忽略毫秒。
答案 1 :(得分:1)
您可以用这种方式截断毫秒:
if (lastWriteDate.AddMilliseconds(-lastWriteDate.Millisecond) <= clientDate)
{
// ....
}
您还可以创建TimeSpan
并检查它是否低于最高值:
TimeSpan diff = clientDate - lastWriteDate;
if (diff < TimeSpan.FromSeconds(1))
{
// ....
}