我正在使用C#开发ASP.NET Mvc应用程序,并且在尝试上载.CSV文件以将其数据保存到数据库时遇到问题。
问题来自.CSV文件的日期列。在该列中使用两种日期格式。第一个是“ mm / dd / yyyy”,通过以下代码我可以毫无问题地将其解析为DateTime对象:
// for the date : 09/30/2014
DateTime tempo = Convert.ToDateTime("09/30/2014");
第二种格式是“ mm / dd / yy”。上面的相同方法不适用于此格式,并引发异常
// for the date : 09/30/14
DateTime tempo = Convert.ToDateTime("09/30/14");
// this line throws ;
// [09/30/14] String was not recognized as a valid DateTime. exception
是否有一种适用于两种日期格式的解决方案?
谢谢你的帮助。
首先,mm
说明符是几分钟,MM
说明符是几个月。Convert.ToDateTime
方法CurrentCulture
默认使用您的。这意味着MM/dd/yy
不是一个标准的日期和时间格式的CurrentCulture
,但是MM/dd/yyyy
是。
您可以使用自定义日期和时间格式的字符串,例如;
string s = "09/30/14";
DateTime date;
if(DateTime.TryParseExact(s, "MM/dd/yy", CultureInfo.InvariantCulture,
DateTimeStyles.None, out date))
{
// Successfully parse
}
请注意,"/"
自定义格式说明符具有将我替换为当前区域性或提供的区域性日期分隔符的特殊含义。这意味着即使您的字符串和格式匹配,解析也将失败。
是否有一种适用于两种日期格式的解决方案?
DateTime.TryParseExact
方法具有将格式作为字符串数组的重载。如果你的字符串相匹配的一个你的格式,它会回报true
。
string s = "09/30/14";
sstring[] formats = {"MM/dd/yy", "MM/dd/yyyy"};
DateTime date;
if(DateTime.TryParseExact(s, formats, CultureInfo.InvariantCulture,
DateTimeStyles.None, out date))
{
// Successfully parse
}
您还可以看到自己CurrentCulture
喜欢的所有标准日期和时间模式;
foreach (var format in CultureInfo.CurrentCulture.
DateTimeFormat.
GetAllDateTimePatterns())
{
Console.WriteLine (format);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句