2013-07-29 25 views
0

在我的.aspx文件,我需要,我去當地的日期,因爲它被存儲爲UTC日期轉換asp.net ConvertTimeFromUtc .ASPX的內部文件

 <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

可能使用一個TemplateField

<asp:TemplateField HeaderText="Time Stamp"/> 
<ItemTemplate> 
    <%# Convert.ToDateTime(Eval("AnalasisDate")).ToLocalTime() %> 
</ItemTemplate> 
</asp:TemplateField> 
+0

你好,我添加了額外的代碼,但仍然出現錯誤。請指教 –

1

你可以使用這個語法:

<%= [your code] %> 

例如:

<%= TimeZoneInfo.ConvertTimeFromUtc(result.AnalasisDate.Value, tz) %> 
+0

你好,我添加了額外的代碼,但仍得到一個錯誤。請告知 –

+0

這不是語法問題。 因爲這個效果很好* <%= DateTime.Now.ToString()%> * –

0

@codingbiz =>這個答案將通過爲服務器工作側。 ToLocalTime() 將時間轉換爲服務器的時區。如果您想從服務器獲取時區並知道服務器的位置,可能是一種解決方案。

如果你想從客戶端顯示時間,你必須做更多的事情。就像用輸入值來詢問用戶的哪個時區是一樣的。或者,如果您知道用戶在哪裏,你可以用自己的時區ID刺:

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

在這裏,你可以找到所有的TimeZoneID的: https://msdn.microsoft.com/nl-nl/library/gg154758.aspx