C# Characters changed when returning zip folder and file names -


i writing script loop on range of dates, check whether each date valid trading day , check there corresponding folder , file name each date.

quantconnect/lean githib repo classes

the issue having file.exists(datafile) method coming false each time. reason seems folder names being stored in formattedfoldername having characters changed.

the target folders zipped, wonder if issue maybe?

intended file path: c:\users\richa_000\desktop\exporter\forex\fxcm\minute\audjpy\20070401_quote\20070401_audjpy_minute_quote

actual file path: c:\users\richa_000\desktop\exporter\forex\fxcm\minute\audjpy\20070401_quoae\20070401_au1jp7_0inuae_quoae

i think zip folder, 20070401_quote messing this, i'm not sure.

program.cs

using system; using system.io; using quantconnect; using quantconnect.securities; using quantconnect.securities.forex;  namespace tradingdaysfilechecker {     class program     {         static void main(string[] args)         {             var startdate = new datetime(2007, 04, 01);             var enddate = new datetime(2016, 07, 25);             var datafilepath = @"c:\users\richa_000\desktop\exporter\forex\fxcm\minute\";              var securitytype = securitytype.forex;             var ticker = ticktype.trade;             var markethoursdatabase = markethoursdatabase.fromdatafolder();             var market = market.fxcm;             var symbol = symbol.create(ticker.tostring(), securitytype, market);             var markethoursdbentry = markethoursdatabase.getentry(symbol.id.market, symbol.value, symbol.id.securitytype);              var exchange = new forexexchange(markethoursdbentry.exchangehours);             var validtradingdays = new datehandler(startdate, enddate, datafilepath).iterateoverdaterange(exchange);              var forexsecuritiesfolders = directory.getdirectories(datafilepath);                  foreach (var validday in validtradingdays)                 {                     foreach (var forexsecurity in forexsecuritiesfolders)                     {                         var securityname = new directoryinfo(forexsecurity).name.tostring();                         var formattedfoldername = validday.tostring("yyyymmdd_quote");                         var formattedfilename = validday.tostring($"yyyymmdd_{securityname}_minute_quote");                          var datafile = datafilepath + securityname + @"\" + formattedfoldername + @"\" + formattedfilename;                          if (!file.exists(datafile))                         {                             console.writeline(datafile);                             console.readline(); // stopping after first run while troubleshooting                         }                     }                 }                 console.readline();         }     } } 

datehandler.cs

using system; using system.collections.generic; using quantconnect.securities.forex;  namespace tradingdaysfilechecker {     public class datehandler     {         private datetime _startdate;         private datetime _enddate;          public datehandler(datetime startdate, datetime enddate, string filepath)         {             _startdate = startdate;             _enddate = enddate;         }          public ienumerable<datetime> iterateoverdaterange(forexexchange exchange)         {             (var day = _startdate.date; day.date <= _enddate.date; day = day.adddays(1))                 if (exchange.isopenduringbar(day.date, day.date.adddays(1), false))                 {                     yield return day;                 }         }     } } 

ok, it's how you're building formatted names datetime objects. when call .tostring() looks special formatting characters, can't include in literal text. 't' getting converted because 't' formatting character meridian (am/pm, single 't' gives or p) , same thing 'm', it's being replaced single digit of minutes of datetime object.

try this:

                var formattedfoldername = validday.tostring("yyyymmdd") + "_quote";                 var formattedfilename = validday.tostring($"yyyymmdd") + securityname + "_minute_quote"; 

Comments

Popular posts from this blog

magento2 - Magento 2 admin grid add filter to collection -

Android volley - avoid multiple requests of the same kind to the server? -

Combining PHP Registration and Login into one class with multiple functions in one PHP file -