Reduce instantiation of CultureInfo
Some checks failed
Build .NET Project / build (push) Has been cancelled

This commit is contained in:
2026-03-05 17:20:42 -05:00
parent d41832617d
commit 709285b590
5 changed files with 35 additions and 20 deletions

View File

@@ -178,7 +178,7 @@ namespace MarketData.Helper
// ************************************************************************** Z A C K S E A R N I N G S A N N O U N C E M E N T S *******************************************
// ******************************************************************************************************************************************************************************
/// <summary>
/// This retrieves earnings announcements from Zacks Research and is used during the nighyly process.
/// This retrieves earnings announcements from Zacks Research and is used during the nightly process.
/// </summary>
/// <param name="symbol"></param>
/// <returns></returns>
@@ -349,6 +349,9 @@ namespace MarketData.Helper
public static Splits GetSplits()
{
HttpNetResponse httpNetResponse = null;
System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-US");
String format="dd MMM yyyy";
try
{
Splits splits = new Splits();
@@ -380,7 +383,7 @@ namespace MarketData.Helper
if (null != dataColumns[0]) split.Exchange = dataColumns[0].InnerText.Trim().ToUpper(); // exchange
if (null != dataColumns[1]) split.Symbol = dataColumns[1].InnerText.Trim().ToUpper(); // symbol
if (null != dataColumns[2]) split.EffectiveDate = DateTime.ParseExact(dataColumns[2].InnerText.Trim().ToUpper(),
"dd MMM yyyy", new System.Globalization.CultureInfo("en-US"), DateTimeStyles.AssumeLocal);
format, cultureInfo, DateTimeStyles.AssumeLocal);
if (null != dataColumns[3]) split.StrRatio = dataColumns[3].InnerText.Trim().ToUpper(); // ratio
splits.Add(split);
}
@@ -2926,6 +2929,11 @@ namespace MarketData.Helper
{
TimeSeriesCollection timeSeriesCollection = new TimeSeriesCollection();
Dictionary<DateTime,DateTime> dates = new Dictionary<DateTime,DateTime>();
System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-US");
string[]formatyyyy =new string[]{"yyyy"};
string[]formatyyyyHMM =new string[]{"yyyy"};
DateTime today=DateTime.Now;
try
{
@@ -2951,7 +2959,7 @@ namespace MarketData.Helper
if(strDateElement.Length.Equals(4))
{
bool result=DateTime.TryParseExact(strDateElement, new string[]{"yyyy"}, new System.Globalization.CultureInfo("en-US"), DateTimeStyles.AssumeLocal,out reportDate);
bool result=DateTime.TryParseExact(strDateElement, formatyyyy, cultureInfo, DateTimeStyles.AssumeLocal,out reportDate);
if(!result)continue;
if(reportDate.Year.Equals(today.Year))
{
@@ -2964,7 +2972,7 @@ namespace MarketData.Helper
}
else
{
bool result=DateTime.TryParseExact(strDateElement, new string[]{"yyyy-MM"}, new System.Globalization.CultureInfo("en-US"), DateTimeStyles.AssumeLocal,out reportDate);
bool result=DateTime.TryParseExact(strDateElement, formatyyyyHMM, cultureInfo, DateTimeStyles.AssumeLocal,out reportDate);
if(!result)continue;
}
TimeSeriesElement timeSeriesElement = new TimeSeriesElement();
@@ -3240,6 +3248,10 @@ namespace MarketData.Helper
private static Dictionary<DateTime,Dictionary<String,String>> CreateDictionaryByDate(Dictionary<String,MStarDataSet> dataSets)
{
System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-US");
String[] formatyyyy = new string[]{"yyyy"};
String[] formatyyyyHMM = new string[]{"yyyy-MM"};
try
{
DateTime today=DateTime.Now;
@@ -3256,7 +3268,7 @@ namespace MarketData.Helper
DateTime reportDate=Utility.Epoch;
if(strDateElement.Length.Equals(4))
{
bool result=DateTime.TryParseExact(strDateElement, new string[]{"yyyy"}, new System.Globalization.CultureInfo("en-US"), DateTimeStyles.AssumeLocal,out reportDate);
bool result=DateTime.TryParseExact(strDateElement, formatyyyy, cultureInfo, DateTimeStyles.AssumeLocal,out reportDate);
if(!result)continue;
if(reportDate.Year.Equals(today.Year))
{
@@ -3269,7 +3281,7 @@ namespace MarketData.Helper
}
else
{
bool result=DateTime.TryParseExact(strDateElement, new string[]{"yyyy-MM"}, new System.Globalization.CultureInfo("en-US"), DateTimeStyles.AssumeLocal,out reportDate);
bool result=DateTime.TryParseExact(strDateElement, formatyyyyHMM, cultureInfo, DateTimeStyles.AssumeLocal,out reportDate);
if(!result)continue;
}

View File

@@ -11,6 +11,8 @@ namespace MarketData.Utils
{
public class FeedParser
{
private static readonly System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-US");
private FeedParser()
{
}
@@ -58,6 +60,7 @@ namespace MarketData.Utils
periodEnding = periodEnding.Replace("Period Ending", "");
int length = periodEnding.Length;
int index = 0;
while (index < length)
{
String strMonth = periodEnding.Substring(index, 3);
@@ -69,7 +72,7 @@ namespace MarketData.Utils
sb = new StringBuilder();
for (int yIndex = 0; yIndex < 5; yIndex++) sb.Append(periodEnding[index++]);
String strYear = sb.ToString().Trim();
DateTime periodEndingDate = DateTime.ParseExact(strMonth + Utility.Pad(strDay, '0', 2) + strYear, "MMMddyyyy", new System.Globalization.CultureInfo("en-US"));
DateTime periodEndingDate = DateTime.ParseExact(strMonth + Utility.Pad(strDay, '0', 2) + strYear, "MMMddyyyy", cultureInfo);
periodEndingDates.Add(periodEndingDate);
}
return periodEndingDates;
@@ -85,12 +88,12 @@ namespace MarketData.Utils
strText = strText + " " + DateTime.Now.Year.ToString();
string[] items = strText.Split(' ');
strText = items[0] + "-" + Utility.Pad(items[1], '0', 2) + "-" + items[2];
return DateTime.ParseExact(strText, "MMM-dd-yyyy", new System.Globalization.CultureInfo("en-US"));
return DateTime.ParseExact(strText, "MMM-dd-yyyy", cultureInfo);
}
else
{
strText = strText.Replace(" ", "0");
return DateTime.ParseExact(strText, "dd-MMM-yy", new System.Globalization.CultureInfo("en-US"));
return DateTime.ParseExact(strText, "dd-MMM-yy", cultureInfo);
}
}
catch (Exception)

View File

@@ -11,8 +11,10 @@ namespace MarketData.Utils
{
public class Utility
{
private static DateTime epoch = DateTime.Parse("01-01-0001");
private static TimeSpan oneDay=new TimeSpan(1,0,0,0);
private static readonly DateTime epoch = DateTime.Parse("01-01-0001");
private static readonly TimeSpan oneDay=new TimeSpan(1,0,0,0);
private static readonly System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-US");
private static readonly String[] formats=new[] { "MMMM dd,yyyy" ,"yyyy-MM-dd HH:mm:ss","MM/dd/yyyy HH:MM tt", "yyyy-MM-dd","yy-MM-dd","yyyy-MM-dd hh:mm:ss tt","dddd, MMMM dd","MMM dd yyyy","yyyy-MM","ddd, MMM. d","ddd, MMM. dd","yyyy/MM/dd","M-d-yyyy","dd-MM-yyyy","MM-dd-yyyy","M.d.yyyy","dd.MM.yyyy","MM.dd.yyyy","yyyyMMdd" }.Union(cultureInfo.DateTimeFormat.GetAllDateTimePatterns()).ToArray();
public static bool IsProcessRunning(String processName, List<String> commandArgs)
{
@@ -608,9 +610,6 @@ namespace MarketData.Utils
}
public static DateTime ParseDate(String strDate)
{
System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-US");
String[] formats=new[] { "MMMM dd,yyyy" ,"yyyy-MM-dd HH:mm:ss","MM/dd/yyyy HH:MM tt", "yyyy-MM-dd","yy-MM-dd","yyyy-MM-dd hh:mm:ss tt","dddd, MMMM dd","MMM dd yyyy","yyyy-MM","ddd, MMM. d","ddd, MMM. dd","yyyy/MM/dd","M-d-yyyy","dd-MM-yyyy","MM-dd-yyyy","M.d.yyyy","dd.MM.yyyy","MM.dd.yyyy","yyyyMMdd" }.Union(cultureInfo.DateTimeFormat.GetAllDateTimePatterns()).ToArray();
strDate = strDate.Trim();
DateTime dateTime=DateTime.ParseExact(strDate, formats, cultureInfo, DateTimeStyles.AssumeLocal);
return dateTime;