2017-05-12 69 views
0

时区信息我已经从数据库中的特定记录,例如-6这意味着UTC-6时区信息。
如何使用此-6将我的UTC时间转换为UTC-6转换UTC时间为当地时间利用数据库

我想我必须在c#中使用TimeZoneInfo。
所有记录的时区信息都不相同。

+0

对不起,我被标题 –

回答

0

您可以使用DateTimeOffset创建一个带有偏移量的日期。

var dbDate = myRawDbDate.Kind == DateTimeKind.Unknown ? DateTime.SpecifyKind(myRawDbDate, DateTimeKind.Utc): myRawDbDate; 
var localDdate = new DateTimeOffset(dbDate, new TimeSpan(0,6,0)).DateTime; 
+0

弄糊涂了日期仍未被转换为UTC-6 .. DateTime.SpecifyKind(myRawDbDate,DateTimeKind.Utc)这将返回UTC本地日期时间。 –

+0

@DrewAguirre编辑答案 –

+1

小语法错误:在'.DateTime'之前缺少右括号,并且大写'TimeSpan'。你也可以使用更可读的(对我来说)'TimeSpan.FromHours(6)'。 –

0

您好,您可以使用TimeZoneInfo类。

var timeZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"); //UTC-6 
var UTC6date = TimeZoneInfo.ConvertTimeFromUtc(Yourdate.ToUniversalTime(), timeZone); 

欲了解更多信息,请点击此处链接。 MSDN:https://msdn.microsoft.com/en-us/library/bb382835(v=vs.110).aspx

查看所有时区UTC-6:00等

使用TimeZoneInfo.GetSystemTimeZones()方法。

示例代码:

var timeZonList = TimeZoneInfo.GetSystemTimeZones(); 

    foreach (var item in timeZonList) 
    { 
     Console.WriteLine(item); 
    } 

TimeZoneInfo.ConvertTimeFromUtc(date converted to universal time, "Timezone to convert your date"). 

希望这有助于。