我对thetryparseexact方法的工作原理有疑问。
因为我需要将excel数据上传到sql serever。我需要从excel转换sql中的datetime列。但我在EXCEL中没有标准格式列。所以使用tryparse exact。但它如何区分 正常字符串中的dd和mm,例如:10/01/2016如何将其区分为dd / mm / yyyy或mm / dd / yyyy。
我使用以下链接作为参考
预先感谢您的回答。
答案 0 :(得分:1)
我建议投票两种可能的格式,然后分析投票:
// collect all the datetime values in the Excel sheet(s)
String[] data = new String[] { "01/02/2000", "25/08/2007", "09/10/2010" };
DateTime dt;
// then analyze them:
int votesForDayMonth = data
.Count(item => DateTime.TryParseExact(item,
"dd/MM/yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.AssumeLocal,
out dt));
int votesForMonthDay = data
.Count(item => DateTime.TryParseExact(item,
"MM/dd/yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.AssumeLocal,
out dt));
if (votesForDayMonth == votesForMonthDay) {
// Ambiguity, unlucky you
}
else if (votesForDayMonth >= data.Length) {
// dd/MM/yyyy order: all data can be parsed as dd/MM/yyyy but not as MM/dd/yyyy
}
else if (votesForMonthDay >= data.Length) {
// MM/dd/yyyy order: all data can be parsed as MM/dd/yyyy but not as dd/MM/yyyy
}
else if (votesForDayMonth > votesForMonthDay) {
// probably dd/MM/yyyy order
}
else {
// probably MM/dd/yyyy order
}
在实际案例中,当您拥有足够的清晰数据时,您可以找到该格式。在上面的代码中,它是"dd/MM/yyyy order"