コード例 #1
0
ファイル: NRE.cs プロジェクト: mikewusg/nre
        /// <summary>
        /// Parses tenforward for csv data
        /// </summary>
        /// <param name="fileDate"></param>
        /// <param name="csvData"></param>
        /// <returns></returns>
        private List <NewsItem> ParseDailyFxCsv(DateTime fileDate, string csvData)
        {
            var list = new List <NewsItem>();
            var tzs  = new List <TimeZoneInfo>();

            // Diff EST to UTC Diff
            // This is very very very nasty should use time zones!!! will fail on EST Day Time Saving
            var ts_est_utc = new TimeSpan(0, -5, 0, 0);

            //Highjacking the TimeZones from the system since the Robot does something the the default Timezone, and I don't want to spend more time on this

            tzs = System.TimeZoneInfo.GetSystemTimeZones().ToList();
            foreach (TimeZoneInfo tz in tzs)
            {
                if (tz.Id == "Eastern Standard Time")
                {
                    //If we have a match overwrite the static value with the offset
                    ts_est_utc = tz.BaseUtcOffset;
                }
            }

            using (var reader = new StringReader(csvData))
            {
                using (var fields = new CsvReader(reader, true))
                {
                    while (fields.ReadNextRecord())
                    {
                        var newsItem = new NewsItem();

                        int i       = 0;
                        var dateStr = fields[i++];
                        var timeStr = fields[i++];

                        newsItem.UtcDateTime = GetDateTime(fileDate, dateStr, timeStr).Subtract(ts_est_utc);
                        newsItem.TimeZone    = "";
                        newsItem.Currency    = fields[i++].ToUpper();

                        //parse importance
                        var importance = fields[i++].ToLower();
                        newsItem.Importance = ParsingUtil.ParseImportance(importance);

                        var newsEvent = fields[i++];
                        //if event start with currency - remove it
                        if (newsEvent.StartsWith(newsItem.Currency + " "))
                        {
                            newsEvent = newsEvent.Substring(4);
                        }

                        newsItem.Event = newsEvent;

                        newsItem.Actual   = fields[i++];
                        newsItem.Forecast = fields[i++];
                        newsItem.Previous = fields[i++];
                        list.Add(newsItem);
                    }
                }
            }

            return(list);
        }
コード例 #2
0
ファイル: NRE.cs プロジェクト: NicolaiSorensen/nre
        /// <summary>
        /// Parses DailyFx csv data
        /// </summary>
        /// <param name="fileDate"></param>
        /// <param name="csvData"></param>
        /// <returns></returns>
        private List <NewsItem> ParseDailyFxCsv(DateTime fileDate, string csvData)
        {
            var list = new List <NewsItem>();

            using (var reader = new StringReader(csvData))
            {
                using (var fields = new CsvReader(reader, true))
                {
                    while (fields.ReadNextRecord())
                    {
                        var newsItem = new NewsItem();

                        int i       = 0;
                        var dateStr = fields[i++];
                        var timeStr = fields[i++];

                        newsItem.UtcDateTime = GetDateTime(fileDate, dateStr, timeStr);
                        newsItem.TimeZone    = fields[i++];
                        newsItem.Currency    = fields[i++].ToUpper();
                        var newsEvent = fields[i++];
                        //if event start with currency - remove it
                        if (newsEvent.StartsWith(newsItem.Currency + " "))
                        {
                            newsEvent = newsEvent.Substring(4);
                        }

                        newsItem.Event = newsEvent;

                        //parse importance
                        var importance = fields[i++].ToLower();
                        newsItem.Importance = ParsingUtil.ParseImportance(importance);

                        newsItem.Actual   = fields[i++];
                        newsItem.Forecast = fields[i++];
                        newsItem.Previous = fields[i++];
                        list.Add(newsItem);
                    }
                }
            }

            return(list);
        }