C# 通过文件csv名称筛选日期时间范围
我有一个csv文件列表,其中命名约定为yyyymmddhhmm.csv 如果今天的日期是2016年6月14日,我需要从昨天晚上7点到今天早上7点进行文件过滤 我需要实现这些csv,文件名范围为2016年6月13日下午7点到2016年6月14日上午7点C# 通过文件csv名称筛选日期时间范围,c#,C#,我有一个csv文件列表,其中命名约定为yyyymmddhhmm.csv 如果今天的日期是2016年6月14日,我需要从昨天晚上7点到今天早上7点进行文件过滤 我需要实现这些csv,文件名范围为2016年6月13日下午7点到2016年6月14日上午7点 201606132000.csv 201606140100.csv 201606140300.csv 201606140500.csv 201606140700.csv 我已经编写了selecttoday文件。 如何按日期(包括昨天晚上7点到11
201606132000.csv
201606140100.csv
201606140300.csv
201606140500.csv
201606140700.csv
我已经编写了selecttoday文件。
如何按日期(包括昨天晚上7点到11:59点)进行筛选
string[] FileList = Directory.GetFiles(csvpath, DateTime.Today.ToString("yyyyMMdd") + "*.csv");
foreach (var fileName in FileList)
{
\\file process code.
}
如果文件名和创建的日期时间相同,则可以使用以下代码获取列表: 例如,名为
201606132000.csv
的文件的创建时间将为2016/06/13/20:00
,201606140500.csv
将为2016/06/14/05:00
DateTime yesterdayTime = DateTime.Now.AddDays(-1).Date.AddHours(19);
DateTime TodayTime = DateTime.Now.Date.AddHours(7);
List<FileInfo> FilesBetween7To7 = Directory.GetFiles("your path here")
.Select(x => new FileInfo(x))
.Where(y => y.CreationTime > yesterdayTime &&
y.CreationTime < TodayTime)
.ToList();
DateTime yesterdayday=DateTime.Now.AddDays(-1).Date.AddHours(19);
DateTime TodayTime=DateTime.Now.Date.AddHours(7);
列出FilesBetween7To7=Directory.GetFiles(“此处的路径”)
.选择(x=>newfileinfo(x))
.其中(y=>y.CreationTime>YesterDaily&&
y、 CreationTime<今天时间)
.ToList();
或者,您可以使用以下代码段与名称进行比较并选择文件
DateTime yesterdayTime = DateTime.Now.AddDays(-1).Date.AddHours(19);
DateTime TodayTime = DateTime.Now.Date.AddHours(7);
List<string> fileList = Directory.GetFiles(csvpath, "*.csv").ToList();
List<string> FilesInTheRange = new List<string>();
DateTime fileTime;
foreach (string file in fileList)
{
if (DateTime.TryParseExact(file.Replace(".csv",String.Empty), "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out fileTime))
{
if (fileTime >= yesterdayTime && fileTime <= TodayTime)
FilesInTheRange.Add(file);
}
}
DateTime yesterdayday=DateTime.Now.AddDays(-1).Date.AddHours(19);
DateTime TodayTime=DateTime.Now.Date.AddHours(7);
List fileList=Directory.GetFiles(csvpath,“*.csv”).ToList();
List filesinterrange=new List();
日期时间文件时间;
foreach(文件列表中的字符串文件)
{
if(DateTime.TryParseExact(file.Replace(“.csv”,String.Empty),“yyyyymmdd”,CultureInfo.InvariantCulture,datetimestyle.None,out fileTime))
{
如果(fileTime>=YesterDaily&&fileTime如果文件名和创建的日期时间相同,则可以使用以下代码获取列表:
例如,名为201606132000.csv
的文件的创建时间将为2016/06/13/20:00
,201606140500.csv
将为2016/06/14/05:00
DateTime yesterdayTime = DateTime.Now.AddDays(-1).Date.AddHours(19);
DateTime TodayTime = DateTime.Now.Date.AddHours(7);
List<FileInfo> FilesBetween7To7 = Directory.GetFiles("your path here")
.Select(x => new FileInfo(x))
.Where(y => y.CreationTime > yesterdayTime &&
y.CreationTime < TodayTime)
.ToList();
DateTime yesterdayday=DateTime.Now.AddDays(-1).Date.AddHours(19);
DateTime TodayTime=DateTime.Now.Date.AddHours(7);
列出FilesBetween7To7=Directory.GetFiles(“此处的路径”)
.选择(x=>newfileinfo(x))
.其中(y=>y.CreationTime>YesterDaily&&
y、 CreationTime<今天时间)
.ToList();
或者,您可以使用以下代码段与名称进行比较并选择文件
DateTime yesterdayTime = DateTime.Now.AddDays(-1).Date.AddHours(19);
DateTime TodayTime = DateTime.Now.Date.AddHours(7);
List<string> fileList = Directory.GetFiles(csvpath, "*.csv").ToList();
List<string> FilesInTheRange = new List<string>();
DateTime fileTime;
foreach (string file in fileList)
{
if (DateTime.TryParseExact(file.Replace(".csv",String.Empty), "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out fileTime))
{
if (fileTime >= yesterdayTime && fileTime <= TodayTime)
FilesInTheRange.Add(file);
}
}
DateTime yesterdayday=DateTime.Now.AddDays(-1).Date.AddHours(19);
DateTime TodayTime=DateTime.Now.Date.AddHours(7);
List fileList=Directory.GetFiles(csvpath,“*.csv”).ToList();
List filesinterrange=new List();
日期时间文件时间;
foreach(文件列表中的字符串文件)
{
if(DateTime.TryParseExact(file.Replace(“.csv”,String.Empty),“yyyyymmdd”,CultureInfo.InvariantCulture,datetimestyle.None,out fileTime))
{
如果(fileTime>=YesterDaily&&fileTime这是一段未经测试的代码,但您可能希望使用TryParseExact并将文件名转换为datetime对象,并基于开始和结束日期时间进行比较
string dateTimeFormat = "yyyyMMddHHmm";
string[] FileList = Directory.GetFiles(csvpath, DateTime.Today.ToString("yyyyMMdd") + "*.csv");
int startHour = 19; // 7 PM
int endHour = 7; // 7 AM
DateTime startDT = new DateTime(DateTime.Now.Year, DateTime.Now.Month,
DateTime.Now.Day - 1, startHour, 0, 0);
DateTime endDT = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, endHour, 0, 0);
foreach (var fileName in FileList)
{
DateTime fileDT = DateTime.Min;
if(DateTime.TryParseExact(fileName, dateTimeFormat, CultureInfo.InvariantCulture, DateTimeStyle.None, out fileDT))
{
if(fileDT >= startDT && fileDT <= endDT)
{
\\file process code.
}
}
}
string dateTimeFormat=“yyyyMMddHHmm”;
string[]FileList=Directory.GetFiles(csvpath,DateTime.Today.ToString(“yyyyMMdd”)+“*.csv”);
int startHour=19;//晚上7点
int endHour=7;//上午7点
DateTime startDT=新的日期时间(DateTime.Now.Year、DateTime.Now.Month、,
DateTime.Now.Day-1,startHour,0,0);
DateTime endDT=新的DateTime(DateTime.Now.Year,DateTime.Now.Month,DateTime.Now.Day,endHour,0,0);
foreach(文件列表中的var文件名)
{
DateTime fileDT=DateTime.Min;
if(DateTime.TryParseExact(文件名,dateTimeFormat,CultureInfo.InvariantCulture,DateTimeStyle.None,out fileDT))
{
如果(fileDT>=startDT&&fileDT这是一段未经测试的代码,但您可能希望使用TryParseExact并将文件名转换为datetime对象,并根据开始和结束日期时间进行比较
string dateTimeFormat = "yyyyMMddHHmm";
string[] FileList = Directory.GetFiles(csvpath, DateTime.Today.ToString("yyyyMMdd") + "*.csv");
int startHour = 19; // 7 PM
int endHour = 7; // 7 AM
DateTime startDT = new DateTime(DateTime.Now.Year, DateTime.Now.Month,
DateTime.Now.Day - 1, startHour, 0, 0);
DateTime endDT = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, endHour, 0, 0);
foreach (var fileName in FileList)
{
DateTime fileDT = DateTime.Min;
if(DateTime.TryParseExact(fileName, dateTimeFormat, CultureInfo.InvariantCulture, DateTimeStyle.None, out fileDT))
{
if(fileDT >= startDT && fileDT <= endDT)
{
\\file process code.
}
}
}
string dateTimeFormat=“yyyyMMddHHmm”;
string[]FileList=Directory.GetFiles(csvpath,DateTime.Today.ToString(“yyyyMMdd”)+“*.csv”);
int startHour=19;//晚上7点
int endHour=7;//上午7点
DateTime startDT=新的日期时间(DateTime.Now.Year、DateTime.Now.Month、,
DateTime.Now.Day-1,startHour,0,0);
DateTime endDT=新的DateTime(DateTime.Now.Year,DateTime.Now.Month,DateTime.Now.Day,endHour,0,0);
foreach(文件列表中的var文件名)
{
DateTime fileDT=DateTime.Min;
if(DateTime.TryParseExact(文件名,dateTimeFormat,CultureInfo.InvariantCulture,DateTimeStyle.None,out fileDT))
{
如果(fileDT>=startDT&&fileDT是特定文件的名称和创建时间是否相同?名称不会相同,但创建时间可以相同。我不能根据创建日期使用筛选。例如201606131800.csv-2016/6/14 1am
201606132000.csv-2016/6/14 1am
201606140100.csv-2016/6/14 1am
是名称和cre特定文件的更新时间相同?名称不相同,但创建时间可以相同。我不能使用基于创建日期的筛选。例如201606131800.csv-2016/6/14 1am
201606132000.csv-2016/6/14 1am
201606140100.csv-2016/6/14 1am
请注意,有些情况下,文件的创建日期时间更改,例如从web下载文件的时间。但是,如果它是本地创建的文件,则不会有任何问题。@如果要使用此CultureInfo.InvariantCulture,DateTimeStyles,我需要包括哪个库,则不算幸运。None@Jonathan:使用System.Globalization;
请注意,有些情况下,文件的创建日期和时间NGE,例如从web下载文件时。但如果它是本地创建的文件,则不会有任何问题。@un lucky我需要包含哪个库才能使用此CultureInfo.i