c#中的DateTime解析错误

时间:2015-01-19 11:34:10

标签: c# datetime

在尝试从Sql server获取日期时显示错误,格式为1986-02-02 00:00:00.0000000。需要以dd / MM / yyyy格式显示。工作正常,格式如2015-01-14.tried不同的方式,但没有工作。请帮助。

//c#
   string dt = reader[6].ToString();    
   dob_lbl.Text = DateTime.ParseExact(dt, "M/dd/yyyy hh:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture).ToString("dd/MM/yyyy");

错误:字符串未被识别为有效的DateTime

3 个答案:

答案 0 :(得分:1)

更改此项,因为您的输入字符串与传入解析器的模式不匹配

"M/dd/yyyy hh:mm:ss tt"

"yyyy/mm/dd hh:mm:ss tt"

所以喜欢这个

 dob_lbl.Text = DateTime.ParseExact(dt, "yyyy/mm/dd hh:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture).ToString("dd/MM/yyyy");

答案 1 :(得分:0)

首先,您应该使用

将数据视为已识别的sqlDateTime
DateTime dt = reader.GetDateTime(6);

现在dt.ToString("dd/MM/yyyy");应该有效。

答案 2 :(得分:0)

显然,您的字符串和格式不匹配。

在解析yyyy-MM-dd HH:mm:ss.fffffff字符串时使用1986-02-02 00:00:00.0000000格式。

string s = "1986-02-02 00:00:00.0000000";
DateTime dt;
if(DateTime.TryParseExact(s, "yyyy-MM-dd HH:mm:ss.fffffff", CultureInfo.InvariantCulture,
                          DateTimeStyles.None, out dt))
{
    dt.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture).Dump(); // 02/02/1986
}

但更重要的是

我怀疑您将DateTime值保留为字符。 不要这样做!始终使用正确的类型。

阅读:Bad habits to kick : choosing the wrong data type

如果您将值保持为datetime,只需使用GetDateTime metho d将其作为DateTime并使用.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture)来获取它的字符串表示形式。

相关问题