为什么第一个日期字符串 return 为假?
Why does the first Date String return false?
我正在尝试解析字符串以查看它们是否为有效日期。
我使用很少的文化和格式来涵盖日期的不同变化。
功能方面,下面的代码似乎工作正常,但我不明白为什么第一个字符串 returns 'False'。
它不是 MM-dd-yyyy 格式的有效日期字符串吗?。
public class Program
{
public static CultureInfo frc = new CultureInfo("fr-FR");
public static CultureInfo usc = new CultureInfo("en-US");
public static CultureInfo gbc = new CultureInfo("en-GB");
public static CultureInfo inc = new CultureInfo("en-IN");
public static string[] dateFormats = { "d-M-yy", "dd-MM-yyyy","d-M-yyyy", "dd MMMM yyyy", "dMyy", "dMyyyy", "d/M/yy", "d/M/yyyy" };
public static void Main()
{
bool isValidDate = false;
string[] listOfDates = { "10-23-2016", "3-01-93", "14-4-1973", "22 Juin 2015", "Mama, I'm comin home!", "06/06/06" };
foreach (var date in listOfDates)
{
isValidDate = Validate(date, dateFormats);
Console.WriteLine("The string is, {0} and the date validity is {1}",date, isValidDate);
}
Console.ReadLine();
}
public static bool Validate(string s, string[] format)
{
DateTime frDt,enUDt, enGDt, enIDt ;
bool fr,engU,engG, engI;
CultureInfo[] cis = { frc,usc,gbc,inc };
fr = DateTime.TryParseExact(s, format, cis[0], DateTimeStyles.None, out frDt);
engU = DateTime.TryParseExact(s, format, cis[1], DateTimeStyles.None, out enUDt);
engG = DateTime.TryParseExact(s, format, cis[2], DateTimeStyles.None, out enGDt);
engI = DateTime.TryParseExact(s, format, cis[3], DateTimeStyles.None, out enIDt);
if (fr || engU || engG||engI == true)
{
return true;
}
return false;
}
}
第一个日期字符串是 10-23-2016
23 不是有效的月份。所以 dd-MM-yyyy 会失败。
我正在尝试解析字符串以查看它们是否为有效日期。 我使用很少的文化和格式来涵盖日期的不同变化。
功能方面,下面的代码似乎工作正常,但我不明白为什么第一个字符串 returns 'False'。 它不是 MM-dd-yyyy 格式的有效日期字符串吗?。
public class Program
{
public static CultureInfo frc = new CultureInfo("fr-FR");
public static CultureInfo usc = new CultureInfo("en-US");
public static CultureInfo gbc = new CultureInfo("en-GB");
public static CultureInfo inc = new CultureInfo("en-IN");
public static string[] dateFormats = { "d-M-yy", "dd-MM-yyyy","d-M-yyyy", "dd MMMM yyyy", "dMyy", "dMyyyy", "d/M/yy", "d/M/yyyy" };
public static void Main()
{
bool isValidDate = false;
string[] listOfDates = { "10-23-2016", "3-01-93", "14-4-1973", "22 Juin 2015", "Mama, I'm comin home!", "06/06/06" };
foreach (var date in listOfDates)
{
isValidDate = Validate(date, dateFormats);
Console.WriteLine("The string is, {0} and the date validity is {1}",date, isValidDate);
}
Console.ReadLine();
}
public static bool Validate(string s, string[] format)
{
DateTime frDt,enUDt, enGDt, enIDt ;
bool fr,engU,engG, engI;
CultureInfo[] cis = { frc,usc,gbc,inc };
fr = DateTime.TryParseExact(s, format, cis[0], DateTimeStyles.None, out frDt);
engU = DateTime.TryParseExact(s, format, cis[1], DateTimeStyles.None, out enUDt);
engG = DateTime.TryParseExact(s, format, cis[2], DateTimeStyles.None, out enGDt);
engI = DateTime.TryParseExact(s, format, cis[3], DateTimeStyles.None, out enIDt);
if (fr || engU || engG||engI == true)
{
return true;
}
return false;
}
}
第一个日期字符串是 10-23-2016
23 不是有效的月份。所以 dd-MM-yyyy 会失败。