-1

我正在尝试将字符串转换为 C# 中的日期时间格式。

DateTime SnapDate = Convert.ToDateTime(valid(odr, 4)).Date;

protected string valid(OleDbDataReader myreader, int stval)//if any columns are found null then they are replaced by zero
{
   object val = myreader[stval];
   if (val != DBNull.Value)
      return val.ToString();
   else
   return Convert.ToString("");
}

它给了我以下错误:“字符串未被识别为有效的日期时间。从索引 0 开始有一个未知单词。”

我尝试了几件事,例如:parseparseExact仍然没有得到它。

我正在从 Excel 表中读取这些数据。

4

2 回答 2

3

看起来您的输入字符串是 en-US 格式。尝试CultureInfo在方法中指定对象Parse

DateTime SnapDate = DateTime.Parse(valid(odr, 4), new CultureInfo("en-US")).Date;

它将强制Parse方法以格式查找日期M/d/yyyy,该格式对您的输入字符串有效3/21/2013

于 2013-04-01T22:08:35.417 回答
1

我想说,与其使用您的系统文化或选择一种文化,不如选择确切的日期格式并使用它,例如:

DateTime dt = DateTime.ParseExact("3/21/2013", "M\\/d\\/yyyy", null);

参数顺序或日期分隔符没有歧义。

仅供参考:我在正斜杠之前使用反斜杠的原因是为了逃避正斜杠 - 正斜杠意味着日期分隔符,不一定是正斜杠,因此转义它可以消除任何可能的歧义。

于 2013-04-01T22:10:43.490 回答