时间跨度问题

时间:2011-04-27 09:00:06

标签: c# timespan

我写了一个小代码,如果一个zip文件超过5小时(300薄荷),则检查时间例程,然后必须删除该文件。 我有这个代码。但它没有删除任何文件。

string[] zipfiles = Directory.GetFiles("D:\\images\\zipFiles\\", "*.zip*");

foreach (string zip in zipfiles)
{
    FileInfo zipinfo = new FileInfo(zip);
    string t = zipinfo.CreationTime.ToString();
    TimeSpan span = DateTime.Now - zipinfo.CreationTime;
    int k =0;
    k = span.Minutes;
    if (k > 300)
    {
        zipinfo.Delete();
    }
    else
    { 

    }
}

3 个答案:

答案 0 :(得分:8)

你想要TimeSpan.TotalMinutesMinutes属性仅返回时间跨度的分钟部分(0-59)。

答案 1 :(得分:3)

关于使用TotalMinutes而不是Minutes的其他答案是有效的,但是由于您还询问了整体逻辑和代码,我想我可能会提出另一种选择:

var dir = new DirectoryInfo("D:\\images\\zipFiles\\");
var now = DateTime.Now;
var oldFiles = dir.GetFiles("*.zip")
                  .Where(f => (now - f.CreationTime).TotalMinutes > 300);
foreach (var file in oldFiles)
    file.Delete();

这与您的代码完全相同,但更简洁,(在我看来)可读的方式。因为它使用LINQ,所以至少需要.NET 3.5来编译这段代码。

答案 2 :(得分:0)

 string[] zipfiles = Directory.GetFiles("C:\\Delete\\New Folder\\", "*.cs*");

        foreach (string zip in zipfiles)
        {

            FileInfo zipinfo = new FileInfo(zip);
            string t = zipinfo.CreationTime.ToString();
            TimeSpan span = DateTime.Now - zipinfo.CreationTime;
            double k = 0;
            k = span.TotalMinutes;
            if (k > 10)
            {

                zipinfo.Delete();
            }
            else
            {

            }
        }

TotalMinutes获取时间跨度的整数和小数分钟的值