我试图将一系列文件加载到我的C#应用程序中,这些文件是在上午8点之后但下午4点之前创建的.但是,当我这样做时,没有加载任何文件.我检查了所有文件创建时间,它们都是在上午8:03创建的.我想知道是否有人对此有解释以及解决问题的可能方法.
DateTime arg1 = DateTime.Today.AddHours(8); DateTime arg2 = DateTime.Today.AddHours(16); var filesToRetrieve = Directory.GetFiles(sourceDirectory, fileType) .Where(d => DateTime.Compare(new FileInfo(d).CreationTime.Date, arg1) > 0 && DateTime.Compare(new FileInfo(d).CreationTime.Date, arg2) < 0); files = filesToRetrieve.ToArray();
Christos.. 7
问题是,你使用CreationTimeUtc
,UTC时间,而这两个arg1
和arg2
均为当地时间.所以CreationTimeUtc
我建议你不要使用,而是使用CreationTime
.
此外,你不需要Date
.
var filesToRetrieve = Directory.GetFiles(sourceDirectory, fileType) .Where(d => DateTime.Compare(new FileInfo(d).CreationTime, arg1) > 0 && DateTime.Compare(new FileInfo(d).CreationTime, arg2) < 0);
如果我们写arg1.Date
,我们得到这个实例的日期组件.DateTime
当我们使用它时,我们得到的时间部分Date
是00:00:00.话虽如此,我认为现在很清楚为什么你没有得到预期的结果,而你已经完成了有关UTC的变化.
问题是,你使用CreationTimeUtc
,UTC时间,而这两个arg1
和arg2
均为当地时间.所以CreationTimeUtc
我建议你不要使用,而是使用CreationTime
.
此外,你不需要Date
.
var filesToRetrieve = Directory.GetFiles(sourceDirectory, fileType) .Where(d => DateTime.Compare(new FileInfo(d).CreationTime, arg1) > 0 && DateTime.Compare(new FileInfo(d).CreationTime, arg2) < 0);
如果我们写arg1.Date
,我们得到这个实例的日期组件.DateTime
当我们使用它时,我们得到的时间部分Date
是00:00:00.话虽如此,我认为现在很清楚为什么你没有得到预期的结果,而你已经完成了有关UTC的变化.