当前位置:  开发笔记 > 编程语言 > 正文

C#日期时间比较问题

如何解决《C#日期时间比较问题》经验,为你挑选了1个好方法。

我试图将一系列文件加载到我的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时间,而这两个arg1arg2均为当地时间.所以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的变化.



1> Christos..:

问题是,你使用CreationTimeUtc,UTC时间,而这两个arg1arg2均为当地时间.所以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的变化.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有