在尝试从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
答案 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)
首先,您应该使用
将数据视为已识别的sqlDateTimeDateTime 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)
来获取它的字符串表示形式。