我的時間有問題
我的服務器在美國,我在丹麥(歐洲),我希望我的網站在當地時間顯示時間。我怎樣才能做到這一點?如何將服務器時間轉換爲當地時間
我試試這個
Datetime localtime = DateTimeOffset.Now.ToOffset(new TimeSpan(1,0,0)).DateTime;
和它的作品,但是當我在GMT + 1/UTC + 1,它只會工作不會當我在GMT + 2/UTC + 2。 有沒有另外一種方式來做到這一點 - 一個更簡單的方法呢?
我的時間有問題
我的服務器在美國,我在丹麥(歐洲),我希望我的網站在當地時間顯示時間。我怎樣才能做到這一點?如何將服務器時間轉換爲當地時間
我試試這個
Datetime localtime = DateTimeOffset.Now.ToOffset(new TimeSpan(1,0,0)).DateTime;
和它的作品,但是當我在GMT + 1/UTC + 1,它只會工作不會當我在GMT + 2/UTC + 2。 有沒有另外一種方式來做到這一點 - 一個更簡單的方法呢?
你唯一需要做的事情是這樣的,如下所示:
string zoneId = "Central European Standard Time";
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById(zoneId);
DateTime result = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow,tzi);
Console.WriteLine("Time is " + result + " in Denmark");
在.NET中使用的TimeZoneInfo類是唯一可靠的方法轉換到/從不同的時區,並得到適當的DST轉換。
TimeZoneInfo.ConvertTimeToUtc(dtLocal,tzi)
是從本地時間到utc時間的逆向轉換。
對於區ID字符串,您可以運行的代碼,這裏的位......
foreach(var tz in TimeZoneInfo.GetSystemTimeZones())
{
Console.WriteLine(tz.DisplayName + " is Id=','" + tz.Id + "'");
}
你可以得到服務器的時間,並做到這一點。
DateTime myTimeGMT = ServerTime.ToUniversalTime();
該這樣做:
DateTime myTimeLocal = myTimeGMT.ToLocalTime();
這裏唯一的限制是你是必須設置爲要轉換到的時區的計算機。
根據我的經驗,當'From'時間或'To'時間都不是當地時區時,.NET在時區之間轉換時遇到問題。
我希望這會有所幫助。
我做了轉換,以顯示在使用模板領域一個gridview。
<asp:TemplateField HeaderText="Last Activity">
<ItemTemplate>
<asp:Label ID="LastActivityLBL" runat="server" Text='<%# Convert.ToDateTime(Eval("LastActivityDate")).ToLocalTime() %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Last Login">
<ItemTemplate>
<asp:Label ID="LastLoginLBL" runat="server" Text='<%# Convert.ToDateTime(Eval("LastLoginDate")).ToLocalTime() %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
Datetime localtime = DateTimeOffset.Now.ToOffset(new TimeSpan(1,0,0)).DateTime;
您可以根據時區改變你的時間跨度like--
Datetime localtime = DateTimeOffset.Now.ToOffset(new TimeSpan(3,0,0)).DateTime;
。
DateTime myTimeLocal = myTimeGMT.ToLocalTime(); ,它會將其轉換回servertime – Nesizer 2008-11-26 00:44:16
您需要查看TimeZoneInfo類來執行轉換。您顯示的轉換不知道DST問題。 – 2008-11-26 00:55:53