0

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

但收到一条消息,在此上下文中不支持代码块。

4

3 回答 3

1

您可以使用以下语法:

<%= [your code]  %>

例如:

<%= TimeZoneInfo.ConvertTimeFromUtc(result.AnalasisDate.Value, tz)  %>
于 2013-07-29T20:11:00.800 回答
0

可能使用 TemplateField

<asp:TemplateField HeaderText="Time Stamp"/>
<ItemTemplate>
    <%# Convert.ToDateTime(Eval("AnalasisDate")).ToLocalTime() %>
</ItemTemplate>
</asp:TemplateField>
于 2013-07-29T20:11:25.740 回答
0

@codingbiz => 该答案适用于服务器端。ToLocalTime() 将时间转换为服务器的时区。当您需要服务器的时区并且您知道服务器所在的位置时,这可能是一个解决方案。

如果你想从客户端显示时间,你必须做更多的事情。就像通过输入值询问用户在哪个时区一样。或者,如果您知道用户在哪里,您可以使用他的时区 id-sting:

<%= DateTime cstTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc,
TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time")) %>

在这里您可以找到所有 TimeZoneID: https ://msdn.microsoft.com/nl-nl/library/gg154758.aspx

于 2016-02-26T13:20:04.480 回答