// internally, CrissCross uses yyyy-mm-dd to pass dates from client to server // sometimes also needs to parse dates from executionlog that are in regional format // hence this tries specific regional format then general format. // Also FlexiEnGbUs is a magic option to try both Gb and Us in a safe way public DateParseResult ParseDateStringVariousWays(string dateString, string cultureCode) { var ret = new DateParseResult(); DateTime parseResult; // first try specific culture // specific flexible option for gb/us dates if (cultureCode.ToLower().Equals("flexi-gb-us")) { if (dateString.EndsWith("12:00:00 AM")) { cultureCode = "EN-US"; } else if (dateString.EndsWith("00:00:00")) { cultureCode = "EN-GB"; } else { cultureCode = null; } } if (cultureCode != null) { IFormatProvider culture = new CultureInfo(cultureCode, true); // parse using a culture code if (DateTime.TryParse(dateString, culture, DateTimeStyles.None, out parseResult)) { ret.CouldParse = true; ret.DateTime = parseResult; return(ret); } } // then try generally if (DateTime.TryParse(dateString, out parseResult)) { ret.CouldParse = true; ret.DateTime = parseResult; return(ret); } ret.CouldParse = false; return(ret); }
// internally, CrissCross uses yyyy-mm-dd to pass dates from client to server // sometimes also needs to parse dates from executionlog that are in regional format // hence this tries specific regional format then general format. // Also FlexiEnGbUs is a magic option to try both Gb and Us in a safe way public DateParseResult ParseDateStringVariousWays(string dateString, string cultureCode) { var ret = new DateParseResult(); DateTime parseResult; // first try specific culture // specific flexible option for gb/us dates if (cultureCode.ToLower().Equals("flexi-gb-us")) { if (dateString.EndsWith("12:00:00 AM")) cultureCode = "EN-US"; else if (dateString.EndsWith("00:00:00")) cultureCode = "EN-GB"; else cultureCode = null; } if (cultureCode != null) { IFormatProvider culture = new CultureInfo(cultureCode, true); // parse using a culture code if (DateTime.TryParse(dateString, culture, DateTimeStyles.None, out parseResult)) { ret.CouldParse = true; ret.DateTime = parseResult; return ret; } } // then try generally if (DateTime.TryParse(dateString, out parseResult)) { ret.CouldParse = true; ret.DateTime = parseResult; return ret; } ret.CouldParse = false; return ret; }