我在CSV文件中有一个datetime值,下面是示例数据:
20/06/2016 11:52
21/06/2016 11:52
22/06/2016 11:52不,当我试图解析这个日期时,我得到了错误:
字符串不能被识别为有效的DateTime。
我不知道这个日期的格式是什么,但是我总是希望在我的应用程序将要使用的那种文化中解析它。所以根据目前的文化,我想分析一下我的约会对象。
这就是我尝试的方式,但如上面所示,会出现错误:
string row = "20/06/2016 11:52" Try 1
CultureInfo culture = CultureInfo.CurrentCulture;
DateTimeStyles styles = DateTimeStyles.None;
DateTime dateValue;
DateTime.TryParse(rowValue, culture, styles, out dateValue); // {1/1/0001 12:00:00 AM}Try 2
DateTimeFormatInfo usDtfi = new CultureInfo(culture.Name, false).DateTimeFormat;
var l = Convert.ToDateTime(rowValue, usDtfi); //String was not recognized as a valid DateTime
var g = DateTime.Parse(rowValue, usDtfi);//String was not recognized as a valid DateTime所有这些方法都失败了,我希望有确切的日期,并希望存储在我的Server数据库表中。
我的系统日期时间是格式的:mm/dd/yy
我已经看到了以下几个问题:
String was not recognized as a valid DateTime " format dd/MM/yyyy"
Datetime format Issue: String was not recognized as a valid DateTime
但是所有这些答案都是指定日期格式的,但我不知道格式是什么;这就是为什么我试图从当前的文化中检测到的原因。我不知道我是否在正确地思考。
发布于 2017-01-04 15:35:22
如果您确信遇到的每个字符串都是正确的格式,但您只是不知道是哪一个字符串,那么您可以做的一件事是在计算机上获取所有不同格式的数组,并在解析精确方法中使用该数组:
var formats = (from CultureInfo ct in CultureInfo.GetCultures(CultureTypes.AllCultures)
select ct.DateTimeFormat.GetAllDateTimePatterns()).SelectMany((x) => x).ToArray();
DateTime test = DateTime.ParseExact("20/06/2016 11:52", formats, CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal);我的机器上的代码产生了超过26,000种格式。只要字符串跟随其中一条,它就会被接受。
如果获得适当的格式不一致,则可以选择以下路线:
var formats = (from CultureInfo ct in CultureInfo.GetCultures(CultureTypes.AllCultures)
select ct.DateTimeFormat);
string dateString = "20/06/2016 11:52";
DateTime temp = new DateTime(0);
foreach (DateTimeFormatInfo dfi in formats)
{
if (DateTime.TryParseExact(dateString, dfi.GetAllDateTimePatterns(), dfi, DateTimeStyles.None, out temp))
{
break;
}
}
if(temp == new DateTime(0))
{
//save string to get it's format
}发布于 2017-01-04 15:02:40
如果您100%确信格式将始终相同,则可以使用ParseExact方法如下:
var parsedDate = DateTime.ParseExact(row, "dd/MM/yyyy hh:mm", CultureInfo.InvariantCulture);https://stackoverflow.com/questions/41466876
复制相似问题