在我的.aspx文件中,我需要将我获得的日期转换为本地日期,因为它存储为UTC
<asp:SqlDataSource ID="SqlDS1" runat="server" ConnectionString="<%$ ConnectionStrings:phiSQL %>"
SelectCommand="select ID, AnalasisDate from ProgTbl"></asp:SqlDataSource>
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDS1" Width="1200px"
AutoGenerateColumns="False" OnRowCommand="GridView1_OnRowCommand"
AllowSorting="True">
<Columns>
<asp:BoundField DataField="ID" HeaderText="Identification"/>
<asp:BoundField DataField="AnalasisDate" HeaderText="Time Stamp"/>
...
我知道做类似
的事情 TimeZoneInfo.ConvertTimeFromUtc(result.AnalasisDate.Value, tz)
会这样做,但不知道如何将其合并到.aspx文件中。
我尝试了以下内容:
<Columns>
<asp:TemplateField HeaderText="Time Stamp"/>
<ItemTemplate>
<%= TimeZoneInfo.ConvertTimeFromUtc(AnalasisDate, TimeZoneInfo.FindSystemTimeZoneById(Session["Timezone"].ToString())) %>
</ItemTemplate>
</asp:TemplateField>
但在此上下文中收到代码阻止不支持的消息。
答案 0 :(得分:1)
您可以使用以下语法:
<%= [your code] %>
例如:
<%= TimeZoneInfo.ConvertTimeFromUtc(result.AnalasisDate.Value, tz) %>
答案 1 :(得分:0)
可能使用TemplateField
<asp:TemplateField HeaderText="Time Stamp"/>
<ItemTemplate>
<%# Convert.ToDateTime(Eval("AnalasisDate")).ToLocalTime() %>
</ItemTemplate>
</asp:TemplateField>
答案 2 :(得分:0)
@codingbiz =&gt;该答案适用于服务器端。 ToLocalTime()
将时间转换为服务器的时区。当您需要服务器的时区并且知道服务器所在的位置时,可以成为一个解决方案。
如果您想从客户端显示时间,您必须做更多的事情。就像询问用户在哪个时区的输入值一样。或者如果你知道用户在哪里,你可以使用他的时区id-sting:
<%= DateTime cstTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc,
TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time")) %>
在这里你可以找到所有的TimeZoneID: https://msdn.microsoft.com/nl-nl/library/gg154758.aspx