private static Boolean GetMonthDayOrder(String pattern, DateTimeFormatInfo dtfi, out int order)
{
int monthOrder = -1;
int dayOrder = -1;
int orderCount = 0;
bool inQuote = false;
for (int i = 0; i < pattern.Length && orderCount < 2; i++)
{
char ch = pattern[i];
if (ch == '\'' || ch == '"')
{
inQuote = !inQuote;
}
if (!inQuote)
{
if (ch == 'd')
{
int patternCount = 1;
//
// Skip all day pattern charaters.
//
for(; i+1 < pattern.Length && pattern[i+1] == 'd'; i++)
{
patternCount++;
}
//
// Make sure this is not "ddd" or "dddd", which means day of week.
//
if (patternCount <= 2)
{
dayOrder = orderCount++;
}
}
else if (ch == 'M')
{
monthOrder = orderCount++;
//
// Skip all month pattern characters.
//
for(; i+1 < pattern.Length && pattern[i+1] == 'M'; i++)
{
}
}
}
}
if (monthOrder == 0 && dayOrder == 1)
{
order = ORDER_MD;
return true;
}
if (dayOrder == 0 && monthOrder == 1)
{
order = ORDER_DM;
return true;
}
order = -1;
return false;
}