如何使用正确的时区将Long类型的datetime转换为DateTime

例如1297380023295应该是2010/2/11 9 AM我现在使用这个代码

  long dateNumber = num; long beginTicks = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks; DateTime dateValue = new DateTime(beginTicks + dateNumber * 10000); return dateValue; 

该function的结果是凌晨1点,它是GMT。 我该怎么办?

您正在寻找ToLocalTime()方法:

 long unixDate = 1297380023295; DateTime start = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); DateTime date= start.AddMilliseconds(unixDate).ToLocalTime(); 

您可以在创建新的DateTime对象时指定DateTimeKind,因此可以将其指定为UTC,然后使用.ToLocalTime将其转换为本地时间:

  long dateNumber = 1297380023295; long beginTicks = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks; DateTime dt = new DateTime(beginTicks + dateNumber * 10000, DateTimeKind.Utc); MessageBox.Show(dt.ToLocalTime().ToString()); 
 long a= 634792557112051692; //a= ticks time DateTime dt = new DateTime(a); Response.Write(dt.Hour.ToString()); //dt.hour convert time ticks to time hour 

Powershell脚本片,仅供参考

 $minDate = New-Object "System.DateTime" $minDate = $minDate.AddYears(1969) $minDate.AddMilliseconds(1446616420947)