asp.net ConvertTimeFromUtc .ASPX文件

时间:2013-07-29 20:05:47

标签: asp.net

在我的.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>

但在此上下文中收到代码阻止不支持的消息。

3 个答案:

答案 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