[英]Converting UTC DateTime to local DateTime
我有以下ASP.Net MVC控制器方法:
public ActionResult DoSomething(DateTime utcDate)
{
var localTime = utcDate.ToLocalTime();
}
問題是localTime將具有與utcDate完全相同的值。 我假設這是因為utcDate不知道它具有UTC值。 所以我的問題是如何將utcDate(我知道是UTC)轉換為本地?
如果您知道 DateTime
包含UTC值,則可以使用以下內容 :
DateTime iKnowThisIsUtc = whatever;
DateTime runtimeKnowsThisIsUtc = DateTime.SpecifyKind(
iKnowThisIsUtc,
DateTimeKind.Utc);
DateTime localVersion = runtimeKnowsThisIsUtc.ToLocalTime();
例如,在我當前的應用程序中,我使用SQL的utcnow
在我的數據庫中創建時間戳,但是當我將它們讀入我的C#應用程序時, Kind
proeprty始終是Unknown
。 我創建了一個包裝器函數來讀取時間戳,故意將其Kind
設置為Utc
,然后將其轉換為本地時間 - 基本上如上所述。
請注意,如果以下一個(或兩個)成立, DateTime.ToLocalTime()
僅不會影響該值:
DateTime
的Kind
屬性是DateTimeKind.Local
我想我們可以假設第二點不正確。 因此,似乎iKnowThisIsUtc
的Kind
屬性已設置為Local
。 您需要弄清楚為什么提供給您的這些DateTime
認為它們是本地的。
如MSDN所述,您需要將Date的Kind屬性設置為UTC,以使ToLocalTime()工作(並將日期轉換為本地時間.http://msdn.microsoft.com/en-us/library/system .datetime.tolocaltime.aspx
試試這個:
utcDate = DateTime.SpecifyKind(utcDate, DateTimeKind.Utc);
var localTime = utcDate.ToLocalTime();
請嘗試以下方法:
public static DateTime UtcToPacific(DateTime dateTime)
{
return TimeZoneInfo.ConvertTimeFromUtc(dateTime, TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"));
}
顯然,將太平洋地區改為當地時區。
如果要查找計算機上存在的時區,請參閱以下鏈接: http : //msdn.microsoft.com/en-us/library/bb397781.aspx
或這個:
var localTime = new DateTimeOffset(utcDate,TimeSpan.FromHours(0))
.ToLocalTime().DateTime;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.