<asp:Label ID="timeLabel" runat="server" Text='<%# Eval("time") %>' />
在此语句中,“time”是我的数据库中的时间数据类型。它显示为16:00:00。我想把它显示为下午4点。我认为如果我使用datetime数据类型,这是非常简单的,但是如何将其转换为datetime(使用{HH.mm tt}格式化)或以AM / PM时间显示。
答案 0 :(得分:1)
由于T-SQL time
在CLR端与TimeSpan
映射,当您从数据库中获取此值时,它将是TimeSpan
,而不是DateTime
。
并且您无法代表TimeSpan
代表AM
或PM
代理人。这些仅适用于DateTime
表示。没有TimeSpan
之类的东西; 下午4小时的时间间隔。这没有意义,对吧?
最近的事情可能,从数据库中获取此值并将其添加到DateTime.Today
值超过Add(TimeSpan)
method的值。然后,您可以使用.ToString("h:mm tt")
方法获取字符串表示形式,其文化不会将AMDesignator
和PMDesignator
作为空字符串。
一步一步;
time
TimeSpan
。DateTime dt = DateTime.Today.Add(time)
方法获取日期时间。dt.ToString("h:mm tt", CultureInfo.InvariantCulture)
答案 1 :(得分:0)
我用SQL而不是C#来解决这个问题。 我确实尝试将TimeSpan添加到Eval()参数中的DateTime,但我一直收到FormatException。而且,这种表达变得有些荒谬。
我试过这个
<asp:Label ID="timeLabel" runat="server" Text='<%# DateTime.Today.Add(TimeSpan.Parse(Eval("time").ToString())).ToString("h:mm tt") %>' />
和这个
<asp:Label ID="timeLabel" runat="server" Text='<%# Eval(DateTime.Today.Add(TimeSpan.Parse("time")).ToString("h:mm tt")) %>' />
修改查询以使用
要容易得多SELECT CONVERT(varchar, [time], 100 ) AS [time]
我对这个结果很满意。虽然,我很想知道我是否在C#表达式的正确轨道上。非常感谢您的投入。
答案 2 :(得分:0)
<%#DateTime.Today.Add((TimeSpan)(Eval("Event_From_Time"))).ToString("H:mm tt")%>