我正在使用C#和postgreSQL数据库在asp.net中构建一个Web应用程序。该申请是预约系统。
在列表框中,我打印某个约会的日期,时间和名称。我从数据库中获取日期,时间和名称。 我的问题是日期和时间以长格式显示,见下图。
我希望以 2014-04-22 的格式显示日期,并以格式 08:00 显示时间。
我的代码:
string sql = "SELECT date, time, name FROM tbl_app WHERE id = '" + id + "'";
NpgsqlCommand command = new NpgsqlCommand(sql, conn);
NpgsqlDataReader dr = command.ExecuteReader();
while (dr.Read())
{
Listbox.Items.Add(dr["date"] + " " + dr["time"] + " " + dr["name"]);
}
答案 0 :(得分:4)
不确定如何在Postgres结束时完成格式化,但字段看起来是DateTime
类型,您可以格式化C#代码中的DateTime
对象,如:
while (dr.Read())
{
//Check for DBNull.Value
DateTime date = Convert.ToDateTime(dr["date"]);
DateTime time = Convert.ToDateTime(dr["time"]);
Listbox.Items.Add(date.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture) + " "
time.ToString("HH:mm", CultureInfo.InvariantCulture) + " "
+ dr["name"]);
}
考虑在查询中使用parameter而不是连接查询。这很容易SQL Injection。您可能会看到:Custom Date and Time Format Strings
答案 1 :(得分:2)
您可以使用ToShortDateString
和ToShortTimeString
处理字符串,这就是我在DataReader项目上使用ToString
的原因
while (dr.Read())
{
Listbox.Items.Add(dr["date"].ToString().ToShortDateString() + " " + dr["time"].ToString().ToShortTimeString() + " " + dr["name"]);
}
http://msdn.microsoft.com/en-us/library/system.datetime.toshorttimestring.aspx http://msdn.microsoft.com/en-us/library/system.datetime.toshortdatestring.aspx
修改强>
正如评论指出ToShortDateString确实存在于Strings上,而是应用于DateTime值...代码更新以显示如何
while (dr.Read())
{
Listbox.Items.Add(
DateTime.Parse(dr["date"].ToString()).ToShortDateString() + " " +
DateTime.Parse(dr["time"].ToString()).ToShortTimeString() + " " +
dr["name"]);
}